Index: src/gth-fullscreen.c
===================================================================
--- src/gth-fullscreen.c	(revision 2071)
+++ src/gth-fullscreen.c	(working copy)
@@ -98,6 +98,8 @@
 	GdkPixmap      *buffer;
 	GdkPixmap      *original_buffer;
 	PangoRectangle  bounds;
+
+	GthWindow      *parent_window;
 };
 
 static GthWindowClass *parent_class = NULL;
@@ -1568,23 +1570,69 @@
 	return g_list_reverse (new_list);
 }
 
+static void
+gth_fullscreen_update_size (GthFullscreen *fullscreen, GtkWidget* window, gboolean toolbar)
+{
+	GdkScreen    *screen;
+	GdkRectangle  screen_geom;
+	GtkWidget    *parent;
 
+	parent = GTK_WIDGET (fullscreen->priv->parent_window);
+
+	if (window->window == NULL) return;
+
+	screen = gtk_widget_get_screen(GTK_WIDGET (parent));
+
+	gdk_screen_get_monitor_geometry (screen,
+			gdk_screen_get_monitor_at_window (screen, parent->window),
+			&screen_geom);
+
+	gtk_widget_set_size_request (window, screen_geom.width,
+			toolbar? -1 : screen_geom.height);
+
+	gtk_window_move (GTK_WINDOW (window), screen_geom.x, screen_geom.y);
+}
+
 static void
+screen_size_changed_cb (GdkScreen     *screen,
+			GthFullscreen *fullscreen)
+{
+	GthFullscreenPrivateData *priv = fullscreen->priv;
+
+	gth_fullscreen_update_size(fullscreen, GTK_WIDGET (fullscreen), FALSE);
+
+	if(priv->toolbar_window)
+	{
+		gth_fullscreen_update_size(fullscreen, priv->toolbar_window, TRUE);
+	}
+
+}
+
+static void
+gth_fullscreen_size_request_cb (GtkWidget      *fullscreen_window,
+				GtkRequisition *requisition,
+				GthFullscreen  *fullscreen)
+{
+	gth_fullscreen_update_size(fullscreen, GTK_WIDGET(fullscreen), FALSE);
+}
+
+static void
 gth_fullscreen_construct (GthFullscreen *fullscreen,
 			  GdkPixbuf     *image,
 			  FileData      *file,
-			  GList         *file_list)
+			  GList         *file_list,
+			  GthWindow     *parent_window)
 {
 	GthFullscreenPrivateData *priv = fullscreen->priv;
 	GdkScreen                *screen;
 	GthZoomChange             zoom_change;
 
-	screen = gtk_widget_get_screen (GTK_WIDGET (fullscreen));
 	zoom_change = pref_get_zoom_change ();
 
-	gtk_window_set_default_size (GTK_WINDOW (fullscreen),
-				     gdk_screen_get_width (screen),
-				     gdk_screen_get_height (screen));
+	priv->parent_window = parent_window;
+	screen = gtk_widget_get_screen (GTK_WIDGET (parent_window));
+	gtk_window_set_screen(GTK_WINDOW(fullscreen), screen);
+	gtk_window_set_resizable (GTK_WINDOW (fullscreen), FALSE);
 
 	if (image != NULL) {
 		priv->image = image;
@@ -1630,6 +1678,14 @@
 	else
 		image_viewer_set_zoom (IMAGE_VIEWER (priv->viewer), 1.0);
 
+	g_signal_connect (screen, "size-changed",
+			  G_CALLBACK (screen_size_changed_cb),
+			  fullscreen);
+
+	g_signal_connect (fullscreen, "size_request",
+			  G_CALLBACK (gth_fullscreen_size_request_cb),
+			  fullscreen);
+
 	g_signal_connect (G_OBJECT (priv->viewer),
 			  "key_press_event",
 			  G_CALLBACK (viewer_key_press_cb),
@@ -1697,12 +1753,13 @@
 GtkWidget *
 gth_fullscreen_new (GdkPixbuf *image,
 		    FileData  *file,
-		    GList     *file_list)
+		    GList     *file_list,
+		    GthWindow *parent_window)
 {
 	GthFullscreen *fullscreen;
 
 	fullscreen = (GthFullscreen*) g_object_new (GTH_TYPE_FULLSCREEN, NULL);
-	gth_fullscreen_construct (fullscreen, image, file, file_list);
+	gth_fullscreen_construct (fullscreen, image, file, file_list, parent_window);
 
 	return (GtkWidget*) fullscreen;
 }
@@ -1716,6 +1773,8 @@
 	GtkUIManager             *ui;
 	GError                   *error = NULL;
 	const gchar              *ui_info;
+	GdkScreen                *screen;
+	GdkRectangle              screen_geom;
 
 	priv->actions = actions = gtk_action_group_new ("ToolbarActions");
 	gtk_action_group_set_translation_domain (actions, NULL);
@@ -1752,11 +1811,18 @@
 	/**/
 
 	priv->toolbar_window = gtk_window_new (GTK_WINDOW_POPUP);
-	gtk_window_set_screen (GTK_WINDOW (priv->toolbar_window),
-			       gtk_widget_get_screen (priv->viewer));
-	gtk_window_set_default_size (GTK_WINDOW (priv->toolbar_window),
-				     gdk_screen_get_width (gtk_widget_get_screen (priv->toolbar_window)),
-				     -1);
+
+	screen = gtk_widget_get_screen(GTK_WIDGET (priv->parent_window));
+	gtk_window_set_screen (GTK_WINDOW (priv->toolbar_window), screen);
+	
+	gdk_screen_get_monitor_geometry (screen,
+			gdk_screen_get_monitor_at_window (screen, GTK_WIDGET (priv->parent_window)->window),
+			&screen_geom);
+
+	gtk_widget_set_size_request (priv->toolbar_window, screen_geom.width, -1);
+
+	gtk_window_move (GTK_WINDOW (priv->toolbar_window), screen_geom.x, screen_geom.y);
+
 	gtk_container_set_border_width (GTK_CONTAINER (priv->toolbar_window), 0);
 
 	gtk_container_add (GTK_CONTAINER (priv->toolbar_window),
Index: src/gth-fullscreen.h
===================================================================
--- src/gth-fullscreen.h	(revision 2071)
+++ src/gth-fullscreen.h	(working copy)
@@ -51,7 +51,8 @@
 GType          gth_fullscreen_get_type         (void);
 GtkWidget *    gth_fullscreen_new              (GdkPixbuf     *image,
 						FileData      *file,
-						GList         *file_list);
+						GList         *file_list,
+						GthWindow     *parent_window);
 void           gth_fullscreen_set_slideshow    (GthFullscreen *fullscreen,
 						gboolean       slideshow);
 void           gth_fullscreen_set_catalog      (GthFullscreen *fullscreen,
Index: src/gth-browser.c
===================================================================
--- src/gth-browser.c	(revision 2071)
+++ src/gth-browser.c	(working copy)
@@ -8697,7 +8697,7 @@
 	else 
 		image = NULL;
 	
-	priv->fullscreen = gth_fullscreen_new (image, priv->image, file_list);
+	priv->fullscreen = gth_fullscreen_new (image, priv->image, file_list, window);
 	file_data_list_free (file_list);
 	
 	g_signal_connect (priv->fullscreen,
Index: src/gth-viewer.c
===================================================================
--- src/gth-viewer.c	(revision 2071)
+++ src/gth-viewer.c	(working copy)
@@ -2216,7 +2216,7 @@
 		
 		if (! image_viewer_is_animation (IMAGE_VIEWER (priv->viewer)))
 			image = image_viewer_get_current_pixbuf (IMAGE_VIEWER (priv->viewer));
-		priv->fullscreen = gth_fullscreen_new (image, priv->image, gth_viewer_get_file_list_selection_as_fd (window));	
+		priv->fullscreen = gth_fullscreen_new (image, priv->image, gth_viewer_get_file_list_selection_as_fd (window), window);	
 		g_signal_connect (priv->fullscreen,
 				  "destroy",
 				  G_CALLBACK (fullscreen_destroy_cb),
