diff -Naur gtk/gtkquartz.c gtk/gtkquartz.c
--- gtk/gtkquartz.c	2011-11-22 05:36:41.000000000 -0700
+++ gtk/gtkquartz.c	2013-01-18 14:09:54.000000000 -0700
@@ -80,16 +80,17 @@
 static NSString *
 target_to_pasteboard_type (const char *target)
 {
-  if (strcmp (target, "UTF8_STRING") == 0)
-    return NSStringPboardType;
-  else if (strcmp (target, "image/tiff") == 0)
-    return NSTIFFPboardType;
-  else if (strcmp (target, "application/x-color") == 0)
-    return NSColorPboardType;
-  else if (strcmp (target, "text/uri-list") == 0)
-    return NSURLPboardType;
-  else
-    return [NSString stringWithUTF8String:target];
+   NSString *str;
+   CFStringRef uti;
+
+   if (strcmp (target, "UTF8_STRING") == 0)
+      return NSStringPboardType;
+   else {
+      str = [[NSString alloc] initWithUTF8String:target];
+      uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType, (CFStringRef)str, NULL);
+      [str release];
+      return (NSString *) uti;	  
+   }
 }
 
 NSSet *
@@ -127,16 +128,17 @@
 GdkAtom 
 _gtk_quartz_pasteboard_type_to_atom (NSString *type)
 {
+  NSString *str;
+ 
   if ([type isEqualToString:NSStringPboardType])
     return gdk_atom_intern_static_string ("UTF8_STRING");
-  else if ([type isEqualToString:NSTIFFPboardType])
-    return gdk_atom_intern_static_string ("image/tiff");
-  else if ([type isEqualToString:NSColorPboardType])
-    return gdk_atom_intern_static_string ("application/x-color");
-  else if ([type isEqualToString:NSURLPboardType])
-    return gdk_atom_intern_static_string ("text/uri-list");
-  else
-    return gdk_atom_intern ([type UTF8String], FALSE);  
+  else {
+    str = (NSString *)UTTypeCopyPreferredTagWithClass((CFStringRef)type, kUTTagClassMIMEType);
+    if ( [str isEqualToString:@""] )
+      return NULL;
+    else
+      return gdk_atom_intern([str UTF8String], FALSE);	  
+  }
 }
 
 GList *
@@ -240,13 +242,15 @@
     {
       NSData *data;
       gchar *name;
+      NSString *tstr;
 
       name = gdk_atom_name (target);
 
       if (strcmp (name, "image/tiff") == 0)
 	data = [pasteboard dataForType:NSTIFFPboardType];
       else
-	data = [pasteboard dataForType:[NSString stringWithUTF8String:name]];
+	tstr = target_to_pasteboard_type(name);
+	data = [pasteboard dataForType:tstr];
 
       g_free (name);
 
