diff -ru gtk+.orig/gdk/win32/gdkevents-win32.c gtk+/gdk/win32/gdkevents-win32.c
--- gtk+.orig/gdk/win32/gdkevents-win32.c	Tue Nov 30 15:20:28 2004
+++ gtk+/gdk/win32/gdkevents-win32.c	Tue Nov 30 15:20:06 2004
@@ -2928,7 +2928,8 @@
       if (GDK_WINDOW_DESTROYED (window))
 	break;
 
-      erase_background (window, (HDC) msg->wParam);
+      if (gdk_window_get_window_type (window) != GDK_WINDOW_CHILD && _sizemove_in_progress)
+        erase_background (window, (HDC) msg->wParam);
       return_val = TRUE;
       *ret_valp = 1;
       break;
diff -ru gtk+.orig/gdk/win32/gdkwindow-win32.c gtk+/gdk/win32/gdkwindow-win32.c
--- gtk+.orig/gdk/win32/gdkwindow-win32.c	Tue Nov 30 15:20:28 2004
+++ gtk+/gdk/win32/gdkwindow-win32.c	Tue Nov 30 15:20:06 2004
@@ -1363,20 +1363,25 @@
 
   if (!GDK_WINDOW_DESTROYED (window))
     {
-      HDC hdc;
+      GdkRectangle rect;
 
       if (width == 0)
 	width = impl->width - x;
       if (height == 0)
 	height = impl->height - y;
+
       GDK_NOTE (MISC, g_print ("_gdk_windowing_window_clear_area: %p: "
 			       "%dx%d@+%d+%d\n",
 			       GDK_WINDOW_HWND (window),
 			       width, height, x, y));
-      hdc = GetDC (GDK_WINDOW_HWND (window));
-      IntersectClipRect (hdc, x, y, x + width + 1, y + height + 1);
-      SendMessage (GDK_WINDOW_HWND (window), WM_ERASEBKGND, (WPARAM) hdc, 0);
-      GDI_CALL (ReleaseDC, (GDK_WINDOW_HWND (window), hdc));
+
+      rect.x = x;
+      rect.y = y;
+      rect.width = width;
+      rect.height = height;
+
+      gdk_window_begin_paint_rect (window, &rect);
+      gdk_window_end_paint (window);
     }
 }
 
@@ -1392,7 +1397,13 @@
   
   if (!GDK_WINDOW_DESTROYED (window))
     {
+      GdkWindowImplWin32 *impl = GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW_OBJECT (window)->impl);
       RECT rect;
+
+      if (width == 0)
+	width = impl->width - x;
+      if (height == 0)
+	height = impl->height - y;
 
       GDK_NOTE (MISC, g_print ("_gdk_windowing_window_clear_area_e: %p: "
 			       "%dx%d@+%d+%d\n",
