diff -ur vte-0.34.7.rewrap-7b/src/vte.c vte-0.34.7/src/vte.c
--- vte-0.34.7.rewrap-7b/src/vte.c	2013-09-12 16:03:13.398619714 +0200
+++ vte-0.34.7/src/vte.c	2013-09-12 16:01:52.546616362 +0200
@@ -8033,8 +8033,8 @@
 			"Setting PTY size to %ldx%ld.\n",
 			columns, rows);
 
-	old_rows = terminal->row_count;
-	old_columns = terminal->column_count;
+	old_rows = terminal->pvt->screen->row_count;
+	old_columns = terminal->pvt->screen->column_count;
 
 	if (terminal->pvt->pty != NULL) {
                 GError *error = NULL;
@@ -8052,10 +8052,9 @@
 		terminal->column_count = columns;
 	}
 
-	if ((old_rows != terminal->row_count || old_columns != terminal->column_count) &&
+	if (terminal->pvt->screen == &terminal->pvt->normal_screen &&
+	    (old_rows != terminal->row_count || old_columns != terminal->column_count) &&
 	    _vte_ring_length(terminal->pvt->normal_screen.row_data) >= 1) {
-		// TODO: Don't waste time resizing the normal screen if the alternate screen is active.
-		// Resize it only once when returning to normal screen.
 
 		glong new_scroll_delta;
 		VteScreen *normal_screen = &terminal->pvt->normal_screen;  // Alternate screen has no scrollback buffer, rewrapping there doesn't make much sense.
@@ -8154,6 +8153,9 @@
 		/* Our visible text changed. */
 		vte_terminal_emit_text_modified(terminal);
 	}
+
+	terminal->pvt->screen->row_count = terminal->row_count;
+	terminal->pvt->screen->column_count = terminal->column_count;
 }
 
 /* Redraw the widget. */
diff -ur vte-0.34.7.rewrap-7b/src/vte-private.h vte-0.34.7/src/vte-private.h
--- vte-0.34.7.rewrap-7b/src/vte-private.h	2013-09-12 16:03:13.398619714 +0200
+++ vte-0.34.7/src/vte-private.h	2013-09-12 12:06:45.281977693 +0200
@@ -235,6 +235,7 @@
 		gboolean status_line;
 		GString *status_line_contents;
 		gboolean status_line_changed;
+		glong row_count, column_count;
 	} normal_screen, alternate_screen, *screen;
 
 	/* Selection information. */
diff -ur vte-0.34.7.rewrap-7b/src/vteseq.c vte-0.34.7/src/vteseq.c
--- vte-0.34.7.rewrap-7b/src/vteseq.c	2013-06-28 16:44:33.000000000 +0200
+++ vte-0.34.7/src/vteseq.c	2013-09-12 15:30:27.634538218 +0200
@@ -861,6 +861,7 @@
 			_vte_terminal_clear_screen (terminal);
 			_vte_terminal_home_cursor (terminal);
 		}
+		vte_terminal_set_size(terminal, terminal->column_count, terminal->row_count);
 		/* Reset scrollbars and repaint everything. */
 		gtk_adjustment_set_value(terminal->adjustment,
 					 terminal->pvt->screen->scroll_delta);
