--- backend_gtk.original	2011-04-19 11:53:35.000000000 +0200
+++ backend_gtk.py	2011-04-19 11:58:44.000000000 +0200
@@ -565,7 +565,7 @@
         self.canvas.window.set_cursor(cursord[cursor])
 
     def release(self, event):
-        try: del self._imageBack
+        try: del self._pixmapBack
         except AttributeError: pass
 
     def dynamic_update(self):
@@ -588,7 +588,7 @@
         h = abs(y1 - y0)
 
         rect = [int(val)for val in min(x0,x1), min(y0, y1), w, h]
-        try: lastrect, imageBack = self._imageBack
+        try: lastrect, pixmapBack = self._pixmapBack
         except AttributeError:
             #snap image back
             if event.inaxes is None:
@@ -598,12 +598,15 @@
             l,b,w,h = [int(val) for val in ax.bbox.bounds]
             b = int(height)-(b+h)
             axrect = l,b,w,h
-            self._imageBack = axrect, drawable.get_image(*axrect)
+            #self._imageBack = axrect, drawable.get_image(*axrect)
+            self._pixmapBack = axrect, gtk.gdk.Pixmap(drawable, w, h)
+            self._pixmapBack[1].draw_drawable(gc, drawable, l, b, 0, 0, w, h) 
             drawable.draw_rectangle(gc, False, *rect)
             self._idle_draw_id = 0
         else:
             def idle_draw(*args):
-                drawable.draw_image(gc, imageBack, 0, 0, *lastrect)
+                #drawable.draw_image(gc, imageBack, 0, 0, *lastrect)
+                drawable.draw_drawable(gc, pixmapBack, 0, 0, *lastrect)
                 drawable.draw_rectangle(gc, False, *rect)
                 self._idle_draw_id = 0
                 return False
