diff -ur vte-0.35.0.orig/doc/reference/vte-sections.txt vte-0.35.0/doc/reference/vte-sections.txt
--- vte-0.35.0.orig/doc/reference/vte-sections.txt	2013-11-18 21:46:28.000000000 +0100
+++ vte-0.35.0/doc/reference/vte-sections.txt	2013-12-16 15:41:44.467774066 +0100
@@ -28,6 +28,8 @@
 vte_terminal_get_allow_bold
 vte_terminal_set_scroll_on_output
 vte_terminal_set_scroll_on_keystroke
+vte_terminal_set_rewrap_on_resize
+vte_terminal_get_rewrap_on_resize
 vte_terminal_set_color_bold
 vte_terminal_set_color_bold_rgba
 vte_terminal_set_color_foreground
diff -ur vte-0.35.0.orig/src/vteapp.c vte-0.35.0/src/vteapp.c
--- vte-0.35.0.orig/src/vteapp.c	2013-10-20 22:29:52.000000000 +0200
+++ vte-0.35.0/src/vteapp.c	2013-12-16 15:47:35.659788626 +0100
@@ -557,7 +557,7 @@
 		 icon_title = FALSE, shell = TRUE, highlight_set = FALSE,
 		 cursor_set = FALSE, reverse = FALSE, use_geometry_hints = TRUE,
 		 antialias = TRUE, use_scrolled_window = FALSE,
-		 show_object_notifications = FALSE;
+		 show_object_notifications = FALSE, rewrap = TRUE;
 	char *geometry = NULL;
 	gint lines = -1;
 	const char *message = "Launching interactive shell...\r\n";
@@ -593,6 +593,11 @@
 			"Highlight URLs inside the terminal", NULL
 		},
 		{
+			"no-rewrap", 'R', G_OPTION_FLAG_REVERSE,
+			G_OPTION_ARG_NONE, &rewrap,
+			"Disable rewrapping on resize", NULL
+		},
+		{
 			"shell", 'S', G_OPTION_FLAG_REVERSE,
 			G_OPTION_ARG_NONE, &shell,
 			"Disable spawning a shell inside the terminal", NULL
@@ -923,6 +928,8 @@
 	}
 	vte_terminal_set_cursor_shape(terminal, cursor_shape);
 
+	vte_terminal_set_rewrap_on_resize(terminal, rewrap);
+
 	/* Set the default font. */
         G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
 	vte_terminal_set_font_from_string_full(terminal, font,
diff -ur vte-0.35.0.orig/src/vte.c vte-0.35.0/src/vte.c
--- vte-0.35.0.orig/src/vte.c	2013-11-18 21:10:39.000000000 +0100
+++ vte-0.35.0/src/vte.c	2013-12-16 15:39:00.975767288 +0100
@@ -185,6 +185,7 @@
         PROP_MOUSE_POINTER_AUTOHIDE,
         PROP_PTY,
         PROP_PTY_OBJECT,
+        PROP_REWRAP_ON_RESIZE,
         PROP_SCROLL_BACKGROUND,
         PROP_SCROLLBACK_LINES,
         PROP_SCROLL_ON_KEYSTROKE,
@@ -8246,8 +8247,8 @@
 		_vte_ring_set_visible_rows_hint(terminal->pvt->normal_screen.row_data, terminal->row_count);
 		_vte_ring_set_visible_rows_hint(terminal->pvt->alternate_screen.row_data, terminal->row_count);
 
-		/* Always resize normal screen, even if alternate is visible: bug 415277 */
-		vte_terminal_screen_set_size(terminal, &terminal->pvt->normal_screen, old_columns, old_rows, TRUE);
+		/* Always resize normal screen (given that this feature is enabled), even if alternate is visible: bug 415277 */
+		vte_terminal_screen_set_size(terminal, &terminal->pvt->normal_screen, old_columns, old_rows, terminal->pvt->rewrap_on_resize);
 		/* Resize the alternate screen if it's the current one, but never rewrap it: bug 336238 comment 60 */
 		if (terminal->pvt->screen == &terminal->pvt->alternate_screen)
 			vte_terminal_screen_set_size(terminal, &terminal->pvt->alternate_screen, old_columns, old_rows, FALSE);
@@ -8630,6 +8631,7 @@
 	pvt->allow_bold = TRUE;
 	pvt->nrc_mode = TRUE;
         pvt->deccolm_mode = FALSE;
+        pvt->rewrap_on_resize = TRUE;
 	vte_terminal_set_default_tabstops(terminal);
 
 	/* Cursor shape. */
@@ -11741,6 +11743,9 @@
                 case PROP_PTY_OBJECT:
                         g_value_set_object (value, vte_terminal_get_pty_object(terminal));
                         break;
+                case PROP_REWRAP_ON_RESIZE:
+                        g_value_set_boolean (value, vte_terminal_get_rewrap_on_resize (terminal));
+                        break;
                 case PROP_SCROLL_BACKGROUND:
                         g_value_set_boolean (value, pvt->scroll_background);
                         break;
@@ -11862,6 +11867,9 @@
                 case PROP_PTY_OBJECT:
                         vte_terminal_set_pty_object (terminal, g_value_get_object (value));
                         break;
+                case PROP_REWRAP_ON_RESIZE:
+                        vte_terminal_set_rewrap_on_resize (terminal, g_value_get_boolean (value));
+                        break;
                 case PROP_SCROLL_BACKGROUND:
                         G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
                         vte_terminal_set_scroll_background (terminal, g_value_get_boolean (value));
@@ -12930,6 +12938,21 @@
                                       G_PARAM_STATIC_STRINGS));
 
         /**
+         * VteTerminal:rewrap-on-resize:
+         *
+         * Controls whether or not the terminal will rewrap its contents, including
+         * the scrollback buffer, whenever the terminal's width changes.
+         * 
+         * Since: 0.35.1
+         */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_REWRAP_ON_RESIZE,
+                 g_param_spec_boolean ("rewrap-on-resize", NULL, NULL,
+                                       TRUE,
+                                       G_PARAM_READWRITE | STATIC_PARAMS));
+
+        /**
          * VteTerminal:scroll-background:
          *
          * Controls whether or not the terminal will scroll the background image (if
@@ -13340,6 +13363,49 @@
         /* We just want to export this symbol for compatibility */
 }
 
+/**
+ * vte_terminal_set_rewrap_on_resize:
+ * @terminal: a #VteTerminal
+ * @rewrap: %TRUE if the terminal should rewrap on resize
+ *
+ * Controls whether or not the terminal will rewrap its contents, including
+ * the scrollback history, whenever the terminal's width changes.
+ *
+ * Since: 0.35.1
+ */
+void
+vte_terminal_set_rewrap_on_resize(VteTerminal *terminal, gboolean rewrap)
+{
+        VteTerminalPrivate *pvt;
+
+        g_return_if_fail(VTE_IS_TERMINAL(terminal));
+
+        pvt = terminal->pvt;
+
+        if (rewrap == pvt->rewrap_on_resize)
+                return;
+
+        pvt->rewrap_on_resize = rewrap;
+        g_object_notify (G_OBJECT (terminal), "rewrap-on-resize");
+}
+
+/**
+ * vte_terminal_get_rewrap_on_resize:
+ * @terminal: a #VteTerminal
+ *
+ * Checks whether or not the terminal will rewrap its contents upon resize.
+ *
+ * Returns: %TRUE if rewrapping is enabled, %FALSE if not
+ *
+ * Since: 0.35.1
+ */
+gboolean
+vte_terminal_get_rewrap_on_resize(VteTerminal *terminal)
+{
+	g_return_val_if_fail(VTE_IS_TERMINAL(terminal), FALSE);
+	return terminal->pvt->rewrap_on_resize;
+}
+
 static void
 vte_terminal_real_copy_clipboard(VteTerminal *terminal)
 {
diff -ur vte-0.35.0.orig/src/vte.h vte-0.35.0/src/vte.h
--- vte-0.35.0.orig/src/vte.h	2013-10-20 22:25:15.000000000 +0200
+++ vte-0.35.0/src/vte.h	2013-12-16 15:29:56.911744733 +0100
@@ -309,6 +309,8 @@
 void vte_terminal_set_scroll_on_output(VteTerminal *terminal, gboolean scroll);
 void vte_terminal_set_scroll_on_keystroke(VteTerminal *terminal,
 					  gboolean scroll);
+void vte_terminal_set_rewrap_on_resize(VteTerminal *terminal, gboolean rewrap);
+gboolean vte_terminal_get_rewrap_on_resize(VteTerminal *terminal);
 
 /* Set the color scheme. */
 void vte_terminal_set_color_dim(VteTerminal *terminal,
diff -ur vte-0.35.0.orig/src/vte-private.h vte-0.35.0/src/vte-private.h
--- vte-0.35.0.orig/src/vte-private.h	2013-11-18 21:08:24.000000000 +0100
+++ vte-0.35.0/src/vte-private.h	2013-12-16 15:18:58.483717436 +0100
@@ -275,6 +275,7 @@
 	gboolean text_modified_flag;
 	gboolean text_inserted_flag;
 	gboolean text_deleted_flag;
+	gboolean rewrap_on_resize;
 
 	/* Scrolling options. */
 	gboolean scroll_background;
