diff -rupN gtk+-2.24.13/gdk/win32/gdkdrawable-win32.c gtk+-2.24.13-fix/gdk/win32/gdkdrawable-win32.c
--- gtk+-2.24.13/gdk/win32/gdkdrawable-win32.c	2011-11-10 14:13:19.000000000 +0100
+++ gtk+-2.24.13-fix/gdk/win32/gdkdrawable-win32.c	2012-10-17 16:24:12.000000000 +0200
@@ -2033,8 +2033,8 @@ _gdk_win32_drawable_finish (GdkDrawable
 
   if (impl->cairo_surface)
     {
-      cairo_surface_finish (impl->cairo_surface);
       cairo_surface_set_user_data (impl->cairo_surface, &gdk_win32_cairo_key, NULL, NULL);
+      cairo_surface_destroy(impl->cairo_surface);
     }
 
   g_assert (impl->hdc_count == 0);
