diff --exclude-from=c:\util\tool\diff.ign -up -r from-cvs/gtk+/gdk/win32/gdkdrawable-win32.c my-gtk/gtk+/gdk/win32/gdkdrawable-win32.c
--- from-cvs/gtk+/gdk/win32/gdkdrawable-win32.c	Sat Apr 10 14:15:26 2004
+++ my-gtk/gtk+/gdk/win32/gdkdrawable-win32.c	Sat Apr 10 19:48:54 2004
@@ -1237,14 +1237,28 @@ draw_segments (GdkGCWin32 *gcwin32,
        * e.g. at xpm icons produced with gdk_pixbuf_new_from_xpm_data trough
        * gdk_pixbuf_render_threshold_alpha (testgtk folder icon or
        * Dia's toolbox icons) but only on win9x ... --hb
+       *
+       * Update : see bug #81895 and bug #126710 why this is finally
+       *          needed on any win32 platform ;-)
        */
-      if (gcwin32->pen_width <= 1 && !IS_WIN_NT())
+      if (gcwin32->pen_width <= 1)
         {
           GdkSegment *ps = &segs[nsegs-1];
-          int xc = (ps->y2 == ps->y1) ? 0 : ((ps->x1 < ps->x2) ? 1 : -1);
-          int yc = (ps->x2 == ps->x1) ? 0 : ((ps->y1 < ps->y2) ? 1 : -1);
-	/* don't forget single point lines */
-	xc = (0 == xc && 0 == yc) ? 1 : xc;
+          int xc = 0, yc = 0;
+
+          if (ps->y2 == ps->y1 && ps->x2 == ps->x1)
+            xc = 1; /* just a point */
+          else if (ps->y2 == ps->y1)
+            xc = (ps->x1 < ps->x2) ? 1 : -1; /* advance x only */
+          else if (ps->x2 == ps->x1)
+            yc = (ps->y1 < ps->y2) ? 1 : -1; /* advance y only */
+          else
+            {
+              xc = (ps->x1 < ps->x2) ? 1 : -1;
+              yc = (ps->y1 < ps->y2) ? 1 : -1;
+            }
+
+          //g_print ("Segments %d [%d,%d;%d,%d] xc %d yc %d\n", nsegs, ps->x1, ps->y1, ps->x2, ps->y2, xc, yc);
 
           GDI_CALL (LineTo, (hdc, ps->x2 + xc, ps->y2 + yc));
         }
