diff -urp gimp-1.2.4pre-orig/app/edit_selection.c gimp-1.2.4pre-mine/app/edit_selection.c
--- gimp-1.2.4pre-orig/app/edit_selection.c	Wed Apr  9 13:02:20 2003
+++ gimp-1.2.4pre-mine/app/edit_selection.c	Sun May  4 21:51:31 2003
@@ -560,10 +560,11 @@ edit_selection_draw (Tool *tool)
       gdisplay_transform_coords (gdisp, 
 				 edit_select.x2, edit_select.y2, 
 				 &x2, &y2, TRUE);
-      gdk_draw_rectangle (edit_select.core->win,
-			  edit_select.core->gc, FALSE,
-			  x1, y1,
-			  x2 - x1 + 1, y2 - y1 + 1);
+      if (x2 > x1 && y2 > y1)
+        gdk_draw_rectangle (edit_select.core->win,
+                            edit_select.core->gc, FALSE,
+                            x1, y1,
+                            x2 - x1 - 1, y2 - y1 - 1);
       break;
 
     case EDIT_LAYER_TRANSLATE:
@@ -598,10 +599,11 @@ edit_selection_draw (Tool *tool)
 	    }
 	}
 
-      gdk_draw_rectangle (edit_select.core->win,
-			  edit_select.core->gc, FALSE,
-			  x1, y1,
-			  x2 - x1, y2 - y1);
+      if (x2 > x1 && y2 > y1)
+        gdk_draw_rectangle (edit_select.core->win,
+                            edit_select.core->gc, FALSE,
+                            x1, y1,
+                            x2 - x1 - 1, y2 - y1 - 1);
       break;
 
     case EDIT_FLOATING_SEL_TRANSLATE:
diff -urp gimp-1.2.4pre-orig/app/ellipse_select.c gimp-1.2.4pre-mine/app/ellipse_select.c
--- gimp-1.2.4pre-orig/app/ellipse_select.c	Fri May  3 19:14:11 2002
+++ gimp-1.2.4pre-mine/app/ellipse_select.c	Sun May  4 21:52:07 2003
@@ -105,11 +105,12 @@ ellipse_select_draw (Tool *tool)
   gdisplay_transform_coords (gdisp, x1, y1, &x1, &y1, FALSE);
   gdisplay_transform_coords (gdisp, x2, y2, &x2, &y2, FALSE);
 
-  gdk_draw_arc (ellipse_sel->core->win,
-		ellipse_sel->core->gc, FALSE,
-		x1, y1, 
-                x2 - x1, y2 - y1, 
-                0, 23040);
+  if (x2 > x1 && y2 > y1)
+    gdk_draw_arc (ellipse_sel->core->win,
+                  ellipse_sel->core->gc, FALSE,
+                  x1, y1, 
+                  x2 - x1 - 1, y2 - y1 - 1, 
+                  0, 23040);
 }
 
 static void
diff -urp gimp-1.2.4pre-orig/app/rect_select.c gimp-1.2.4pre-mine/app/rect_select.c
--- gimp-1.2.4pre-orig/app/rect_select.c	Fri May  3 19:14:11 2002
+++ gimp-1.2.4pre-mine/app/rect_select.c	Sun May  4 17:02:26 2003
@@ -486,10 +486,11 @@ rect_select_draw (Tool *tool)
   gdisplay_transform_coords (gdisp, x1, y1, &x1, &y1, FALSE);
   gdisplay_transform_coords (gdisp, x2, y2, &x2, &y2, FALSE);
 
-  gdk_draw_rectangle (rect_sel->core->win,
-                      rect_sel->core->gc, FALSE,
-                      x1, y1, 
-                      x2 - x1, y2 - y1);
+  if (x2 > x1 && y2 > y1)
+    gdk_draw_rectangle (rect_sel->core->win,
+                        rect_sel->core->gc, FALSE,
+                        x1, y1, 
+                        x2 - x1 - 1, y2 - y1 - 1);
 }
 
 static void
