Index: gdk/quartz/gdkgc-quartz.c
===================================================================
--- gdk/quartz/gdkgc-quartz.c	(revision 21809)
+++ gdk/quartz/gdkgc-quartz.c	(working copy)
@@ -66,6 +66,7 @@
 			  GdkGCValuesMask  mask)
 {
   GdkGCQuartz *private = GDK_GC_QUARTZ (gc);
+  CGImageRef image;
 
   if (mask & GDK_GC_FONT)
     {
@@ -88,9 +89,19 @@
       if (private->clip_mask)
 	CGImageRelease (private->clip_mask);
 
-      if (values->clip_mask)
-	private->clip_mask = CGImageCreateCopy (GDK_PIXMAP_IMPL_QUARTZ (GDK_PIXMAP_OBJECT (values->clip_mask)->impl)->image);
-      else
+      if (values->clip_mask) {
+	      image = GDK_PIXMAP_IMPL_QUARTZ (GDK_PIXMAP_OBJECT(values->clip_mask)->impl)->image; 
+
+	      private->clip_mask = CGImageMaskCreate (CGImageGetWidth (image),
+						      CGImageGetHeight (image),
+						      CGImageGetBitsPerComponent (image),
+						      CGImageGetBitsPerPixel (image),
+						      CGImageGetBytesPerRow (image),
+						      CGImageGetDataProvider (image),
+						      NULL,
+						      TRUE);
+	      
+      } else
 	private->clip_mask = NULL;
     }
 
