Index: src/eog-image.c
===================================================================
--- src/eog-image.c	(Revision 3983)
+++ src/eog-image.c	(Arbeitskopie)
@@ -489,7 +489,7 @@
 }
 
 static GnomeVFSFileSize
-eog_image_determine_file_bytes (EogImage *img, GError **error)
+eog_image_determine_file_bytes (EogImage *img, gchar **mime_type, GError **error)
 {
 	GnomeVFSFileInfo *info;
 	GnomeVFSFileSize bytes;
@@ -500,11 +500,14 @@
 	result = gnome_vfs_get_file_info_uri (img->priv->uri,
 					      info,
 					      GNOME_VFS_FILE_INFO_DEFAULT |
+					      GNOME_VFS_FILE_INFO_GET_MIME_TYPE |
 					      GNOME_VFS_FILE_INFO_FOLLOW_LINKS);
 
 	if ((result != GNOME_VFS_OK) || 
 	    (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_SIZE) == 0) {
 		bytes = 0;
+		if (mime_type)
+			*mime_type = NULL;
 
 		g_set_error (error, 
 			     EOG_IMAGE_ERROR, 
@@ -512,6 +515,8 @@
 			     gnome_vfs_result_to_string (result));
 	} else {
 		bytes = info->size;
+		if (mime_type)
+			*mime_type = g_strdup (info->mime_type);
 	}
 
 	gnome_vfs_file_info_unref (info);
@@ -859,6 +864,7 @@
 	GnomeVFSResult result;
 	EogMetadataReader *md_reader = NULL;
 	GdkPixbufFormat *format;
+	gchar *mime_type;
 	GdkPixbufLoader *loader = NULL;
 	guchar *buffer;
 	gboolean failed = FALSE;
@@ -877,9 +883,10 @@
 		priv->file_type = NULL;
 	}
 
-	priv->bytes = eog_image_determine_file_bytes (img, error);
+	priv->bytes = eog_image_determine_file_bytes (img, &mime_type, error);
 
 	if (priv->bytes == 0) {
+		g_free (mime_type);
 		return FALSE;
 	}
 
@@ -902,6 +909,7 @@
 	result = gnome_vfs_open_uri (&handle, priv->uri, GNOME_VFS_OPEN_READ);
 
 	if (result != GNOME_VFS_OK) {
+		g_free (mime_type);
 		g_set_error (error, 
 			     EOG_IMAGE_ERROR, 
 			     EOG_IMAGE_ERROR_VFS,
@@ -911,9 +919,13 @@
 	}
 	
 	buffer = g_new0 (guchar, EOG_IMAGE_READ_BUFFER_SIZE);
+	
 
 	if (read_image_data || read_only_dimension) {
-		loader = gdk_pixbuf_loader_new ();
+		loader = gdk_pixbuf_loader_new_with_mime_type (mime_type, NULL);
+	
+		if (loader == NULL)
+			loader = gdk_pixbuf_loader_new (); 
 
 		g_signal_connect_object (G_OBJECT (loader), 
 					 "size-prepared", 
@@ -921,6 +933,7 @@
 					 img, 
 					 0);
         }
+	g_free (mime_type);
 
 	while (!priv->cancel_loading) {
 		result = gnome_vfs_read (handle, 
