Index: sources/rb-removable-media-source.c
===================================================================
--- sources/rb-removable-media-source.c	(revision 4950)
+++ sources/rb-removable-media-source.c	(working copy)
@@ -60,6 +60,7 @@
 static void impl_delete_thyself (RBSource *source);
 #ifdef ENABLE_TRACK_TRANSFER
 static void impl_paste (RBSource *source, GList *entries);
+void mimetype_copy_to_front (GList **mime_types, char *entry_mime);
 #endif
 static gboolean impl_receive_drag (RBSource *asource, GtkSelectionData *data);
 
@@ -254,6 +255,25 @@
 	g_free (data);
 }
 
+void mimetype_copy_to_front (GList **mime_types, char *entry_mime)
+{
+	GList *l;
+	
+	g_return_if_fail (mime_types != NULL);
+	g_return_if_fail (entry_mime != NULL);
+	
+	for (l = *mime_types; l != NULL; l = g_list_next (l)) {
+		const char *mimetype;
+		
+		mimetype = (const char *)l->data;
+		if (!g_ascii_strcasecmp (mimetype, entry_mime)) {
+			char *m = g_strdup (entry_mime);
+			*mime_types = g_list_prepend (*mime_types, m);
+			break;
+		}
+	}
+}
+
 static void
 impl_paste (RBSource *source, GList *entries)
 {
@@ -278,6 +298,7 @@
 	for (l = entries; l != NULL; l = l->next) {
 		RhythmDBEntry *entry;
 		RhythmDBEntryType entry_type;
+		char *entry_mime;
 		GList *mime_types;
 		char *mimetype;
 		char *extension;
@@ -290,6 +311,7 @@
 		mime_types = NULL;
 		entry = (RhythmDBEntry *)l->data;
 		entry_type = rhythmdb_entry_get_entry_type (entry);
+		entry_mime = (char *) rhythmdb_entry_get_string (entry, RHYTHMDB_PROP_MIMETYPE);
 
 		if (entry_type == our_entry_type ||
 		    entry_type->category != RHYTHMDB_ENTRY_NORMAL) {
@@ -298,6 +320,7 @@
 
 		mime_types = rb_removable_media_source_get_mime_types (RB_REMOVABLE_MEDIA_SOURCE (source));
 		if (mime_types != NULL) {
+			mimetype_copy_to_front (&mime_types, entry_mime);
 			if (!rb_encoder_get_preferred_mimetype (encoder, mime_types, &mimetype, &extension)) {
 				rb_debug ("failed to find acceptable mime type for %s", rhythmdb_entry_get_string (entry, RHYTHMDB_PROP_LOCATION));
 				goto impl_paste_end;
