diff --git a/shell/ev-sidebar-thumbnails.c b/shell/ev-sidebar-thumbnails.c
index 594ebce..962f6ae 100644
--- a/shell/ev-sidebar-thumbnails.c
+++ b/shell/ev-sidebar-thumbnails.c
@@ -744,6 +744,22 @@ refresh (EvSidebarThumbnails *sidebar_thumbnails)
 }
 
 static void
+ev_sidebar_thumbnails_set_icon_size(EvSidebarThumbnailsPrivate *priv)
+{
+        gint i, max_icon_width, icon_width;
+        max_icon_width = -1;
+
+        if (priv->icon_view) {
+                for(i = 0; i < (priv->size_cache->uniform ? 1 : priv->n_pages); i++){
+                        ev_thumbnails_size_cache_get_size(priv->size_cache, i, priv->rotation, &icon_width, NULL);
+                        if (icon_width >= max_icon_width) max_icon_width = icon_width;
+
+                };
+                gtk_icon_view_set_item_width(GTK_ICON_VIEW(priv->icon_view), max_icon_width + 10);
+        };
+}
+
+static void
 ev_sidebar_thumbnails_reload (EvSidebarThumbnails *sidebar_thumbnails)
 {
 	EvDocumentModel *model;
@@ -760,6 +776,8 @@ ev_sidebar_thumbnails_reload (EvSidebarThumbnails *sidebar_thumbnails)
 	ev_sidebar_thumbnails_clear_model (sidebar_thumbnails);
 	ev_sidebar_thumbnails_fill_model (sidebar_thumbnails);
 
+        ev_sidebar_thumbnails_set_icon_size(sidebar_thumbnails->priv);
+
 	/* Trigger a redraw */
 	sidebar_thumbnails->priv->start_page = -1;
 	sidebar_thumbnails->priv->end_page = -1;
@@ -859,6 +877,8 @@ ev_sidebar_thumbnails_document_changed_cb (EvDocumentModel     *model,
 		}
 	}
 
+        ev_sidebar_thumbnails_set_icon_size(priv);
+
 	/* Connect to the signal and trigger a fake callback */
 	g_signal_connect_swapped (priv->model, "page-changed",
 				  G_CALLBACK (page_changed_cb),
