Index: gnome-desktop-3.16.2/libgnome-desktop/gnome-desktop-thumbnail.c
===================================================================
--- gnome-desktop-3.16.2.orig/libgnome-desktop/gnome-desktop-thumbnail.c
+++ gnome-desktop-3.16.2/libgnome-desktop/gnome-desktop-thumbnail.c
@@ -201,6 +201,8 @@ typedef struct {
     gchar  *try_exec;
     gchar  *command;
     gchar **mime_types;
+
+    gboolean no_scale;
 } Thumbnailer;
 
 static Thumbnailer *
@@ -278,6 +280,8 @@ thumbnailer_load (Thumbnailer *thumb)
 
   thumb->try_exec = g_key_file_get_string (key_file, THUMBNAILER_ENTRY_GROUP, "TryExec", NULL);
 
+  thumb->no_scale = g_key_file_get_boolean (key_file, THUMBNAILER_ENTRY_GROUP, "NoScale", NULL);
+
   g_key_file_free (key_file);
 
   return thumb;
@@ -307,6 +311,8 @@ thumbnailer_new (const gchar *path)
   thumb->ref_count = 1;
   thumb->path = g_strdup (path);
 
+  thumb->no_scale = FALSE;
+
   return thumbnailer_load (thumb);
 }
 
@@ -1362,6 +1368,7 @@ gnome_desktop_thumbnail_factory_generate
   double scale;
   int exit_status;
   char *tmpname;
+  gboolean noscale = FALSE;
 
   g_return_val_if_fail (uri != NULL, NULL);
   g_return_val_if_fail (mime_type != NULL, NULL);
@@ -1382,7 +1389,10 @@ gnome_desktop_thumbnail_factory_generate
 
       thumb = g_hash_table_lookup (factory->priv->mime_types_map, mime_type);
       if (thumb)
-        script = g_strdup (thumb->command);
+        {
+          script = g_strdup (thumb->command);
+          noscale = thumb->no_scale;
+        }
     }
   g_mutex_unlock (&factory->priv->lock);
   
@@ -1439,8 +1449,8 @@ gnome_desktop_thumbnail_factory_generate
 
   width = gdk_pixbuf_get_width (pixbuf);
   height = gdk_pixbuf_get_height (pixbuf);
-  
-  if (width > size || height > size)
+
+  if (!noscale && (width > size || height > size))
     {
       const gchar *orig_width, *orig_height;
       scale = (double)size / MAX (width, height);
