diff -upr evince/shell/ev-view.c evince.new/shell/ev-view.c
--- evince/shell/ev-view.c	2005-05-18 22:31:21.000000000 +0400
+++ evince.new/shell/ev-view.c	2005-05-19 00:22:53.000000000 +0400
@@ -1145,9 +1145,6 @@ ev_view_size_request (GtkWidget      *wi
 {
 	EvView *view = EV_VIEW (widget);
 
-	if (!GTK_WIDGET_REALIZED (widget))
-		return;
-
 	if (view->document == NULL) {
 		requisition->width = 1;
 		requisition->height = 1;
@@ -1233,15 +1229,6 @@ ev_view_realize (GtkWidget *widget)
 		gdk_window_set_background (widget->window, &widget->style->black);
 	else
 		gdk_window_set_background (widget->window, &widget->style->mid [GTK_STATE_NORMAL]);
-
-	if (view->document) {
-		/* We can't get page size without a target, so we have to
-		 * queue a size request at realization. Could be fixed
-		 * with EvDocument changes to allow setting a GdkScreen
-		 * without setting a target.
-		 */
-		gtk_widget_queue_resize (widget);
-	}
 }
 
 static void
@@ -1867,7 +1854,13 @@ page_changed_cb (EvPageCache *page_cache
 {
 	if (view->current_page != new_page) {
 
-		view_scroll_to_page (view, new_page);
+		if (view->pending_scroll != SCROLL_TO_CURRENT_PAGE) {
+			/* Should scroll right now */
+			view_scroll_to_page (view, new_page);
+		} else {	
+			/* We'll scroll to new page on allocate */
+			view->current_page = new_page;
+		}
 
 		if (EV_IS_DOCUMENT_FIND (view->document)) {
 			view->find_page = new_page;
