diff -ur gtk+-3.10.8/gdk/gdkcursor.c gtk+-3.10.8.new/gdk/gdkcursor.c
--- gtk+-3.10.8/gdk/gdkcursor.c	2014-04-05 11:52:54.000000000 -0400
+++ gtk+-3.10.8.new/gdk/gdkcursor.c	2014-05-06 14:11:50.427982326 -0400
@@ -356,6 +356,7 @@
   const char *option;
   char *end;
   gint64 value;
+  GdkCursor *cursor;
  
   g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
   g_return_val_if_fail (GDK_IS_PIXBUF (pixbuf), NULL);
@@ -384,7 +385,11 @@
 
   surface = gdk_cairo_surface_create_from_pixbuf (pixbuf, 1, NULL);
   
-  return GDK_DISPLAY_GET_CLASS (display)->get_cursor_for_surface (display, surface, x, y);
+  cursor = GDK_DISPLAY_GET_CLASS (display)->get_cursor_for_surface (display, surface, x, y);
+
+  cairo_surface_destroy (surface);
+
+  return cursor;
 }
 
 /**
Only in gtk+-3.10.8.new/gdk: gdkcursor.c~
