Index: trunk/magic/remove/src/Line.c
===================================================================
--- trunk/magic/remove/src/Line.c	(revision 24344)
+++ trunk/magic/remove/src/Line.c	(revision 24380)
@@ -345,13 +345,4 @@
         MaxBounds (&offsetLine, &xBegin, &xEnd, &yBegin, &yEnd);
 
-    if (xBegin > xEnd) 
-        SwapInt (&xBegin, &xEnd);
-    else
-        ++xEnd;
-    if (yBegin > yEnd)
-        SwapInt (&yBegin, &yEnd);
-    else
-        ++yEnd;
-
     // Step point by point based on the dominate axis
     
@@ -378,4 +369,11 @@
         // Compute the x and y offsets for the line width extent
 
+        if (xBegin > xEnd) 
+            SwapInt (&xBegin, &xEnd);
+        else
+            ++xEnd;
+        if (xBegin < 0) xBegin = 0;
+        if (xEnd > numCols) xEnd = numCols;
+
         yMid = y1 + slope * (xBegin - x1);
         yOffset = fabs (halfWidth * dr / dx);
@@ -387,5 +385,5 @@
             for (y = yBegin; y != yEnd; ++y)
             {
-                if (x >=0 && x < numCols && y >= 0 && y < numRows)
+                if (y >= 0 && y < numRows)
                 {
                     pixel = psAlloc (sizeof(PixelPos));
@@ -421,4 +419,11 @@
         // Compute the x and y offsets for the line width extent
 
+        if (yBegin > yEnd)
+            SwapInt (&yBegin, &yEnd);
+        else
+            ++yEnd;
+        if (yBegin < 0) yBegin = 0;
+        if (yEnd > numRows) yEnd = numRows;
+
         xMid = x1 + slope * (yBegin - y1);
         xOffset = fabs (halfWidth * dr / dy);
@@ -430,5 +435,5 @@
             for (x = xBegin; x != xEnd; ++x)
             {
-                if (x >=0 && x < numCols && y >= 0 && y < numRows)
+                if (x >=0 && x < numCols)
                 {
                     pixel = psAlloc (sizeof(PixelPos));
