diff --git a/libgnome-desktop/gnome-desktop-thumbnail.c b/libgnome-desktop/gnome-desktop-thumbnail.c
index e9b122d..765e0a3 100644
--- a/libgnome-desktop/gnome-desktop-thumbnail.c
+++ b/libgnome-desktop/gnome-desktop-thumbnail.c
@@ -613,11 +613,13 @@ mimetype_supported_by_gdk_pixbuf (const char *mime_type)
 {
 	guint i;
 	static GHashTable *formats_hash = NULL;
+        gchar *key;
+        gboolean result;
 
 	if (!formats_hash) {
 		GSList *formats, *list;
 		
-		formats_hash = g_hash_table_new (g_str_hash, g_str_equal);
+		formats_hash = g_hash_table_new_full (g_str_hash, g_content_type_equals, g_free, NULL);
 
 		formats = gdk_pixbuf_get_formats ();
 		list = formats;
@@ -630,7 +632,7 @@ mimetype_supported_by_gdk_pixbuf (const char *mime_type)
 
 			for (i = 0; mime_types[i] != NULL; i++)
 				g_hash_table_insert (formats_hash,
-						     (gpointer) g_strdup (mime_types[i]),
+						     (gpointer) g_content_type_from_mime_type (mime_types[i]),
 						     GUINT_TO_POINTER (1));	
 				
 			g_strfreev (mime_types);
@@ -639,10 +641,14 @@ mimetype_supported_by_gdk_pixbuf (const char *mime_type)
 		g_slist_free (formats);
 	}
 
-	if (g_hash_table_lookup (formats_hash, mime_type))
-		return TRUE;
+        key = g_content_type_from_mime_type (mime_type);
+	if (g_hash_table_lookup (formats_hash, key))
+		result = TRUE;
+        else
+                result = FALSE;
+        g_free (key);
 
-	return FALSE;
+	return result;
 }
 
 /**
