diff --git a/src/terminal-window.c b/src/terminal-window.c
index c32cfe3..57b185f 100644
--- a/src/terminal-window.c
+++ b/src/terminal-window.c
@@ -85,6 +85,8 @@ struct _TerminalWindowPrivate
 #define PROFILES_UI_PATH        "/menubar/Terminal/TerminalProfiles"
 #define PROFILES_POPUP_UI_PATH  "/Popup/PopupTerminalProfiles/ProfilesPH"
 
+#define SET_SIZE_ACTION_NAME_PREFIX "TerminalSetSize"
+
 #define STOCK_NEW_WINDOW  "window-new"
 #define STOCK_NEW_TAB     "tab-new"
 
@@ -148,6 +150,8 @@ static void view_zoom_out_callback            (GtkAction *action,
                                                TerminalWindow *window);
 static void view_zoom_normal_callback         (GtkAction *action,
                                                TerminalWindow *window);
+static void terminal_set_size_callback        (GtkAction *action,
+					       TerminalWindow *window);
 static void terminal_set_title_callback       (GtkAction *action,
                                                TerminalWindow *window);
 static void terminal_add_encoding_callback    (GtkAction *action,
@@ -1375,6 +1379,30 @@ terminal_window_init (TerminalWindow *window)
       { "ViewZoom100", GTK_STOCK_ZOOM_100, NULL, "<control>0",
         NULL,
         G_CALLBACK (view_zoom_normal_callback) },
+      { SET_SIZE_ACTION_NAME_PREFIX "80x24",
+	NULL,
+	N_("80x2_4"),
+	NULL,
+	NULL,
+	G_CALLBACK (terminal_set_size_callback) },
+      { SET_SIZE_ACTION_NAME_PREFIX "80x43",
+	NULL,
+	N_("80x4_3"),
+	NULL,
+	NULL,
+	G_CALLBACK (terminal_set_size_callback) },
+      { SET_SIZE_ACTION_NAME_PREFIX "132x24",
+	NULL,
+	N_("13_2x24"),
+	NULL,
+	NULL,
+	G_CALLBACK (terminal_set_size_callback) },
+      { SET_SIZE_ACTION_NAME_PREFIX "132x43",
+	NULL,
+	N_("_132x43"),
+	NULL,
+	NULL,
+	G_CALLBACK (terminal_set_size_callback) },
 
       /* Terminal menu */
       { "TerminalProfiles", NULL, N_("Change _Profile") },
@@ -2928,6 +2956,27 @@ view_zoom_normal_callback (GtkAction *action,
 }
 
 static void
+terminal_set_size_callback (GtkAction *action,
+                            TerminalWindow *window)
+{
+  TerminalWindowPrivate *priv = window->priv;
+  const char *name;
+  char *end = NULL;
+  guint width, height;
+
+  if (priv->active_screen == NULL)
+    return;
+
+  name = gtk_action_get_name (action) + strlen (SET_SIZE_ACTION_NAME_PREFIX);
+  width = g_ascii_strtoull (name, &end, 10);
+  g_assert (end && *end == 'x');
+  height = g_ascii_strtoull (end + 1, &end, 10);
+  g_assert (end && *end == '\0');
+
+  terminal_window_set_size_force_grid (window, priv->active_screen, TRUE, width, height);
+}
+
+static void
 terminal_set_title_dialog_response_cb (GtkWidget *dialog,
                                        int response,
                                        TerminalScreen *screen)
diff --git a/src/terminal.xml b/src/terminal.xml
index 8d46fa7..8315f23 100644
--- a/src/terminal.xml
+++ b/src/terminal.xml
@@ -38,6 +38,11 @@
       <separator />
       <menuitem action="TerminalReset" />
       <menuitem action="TerminalResetClear" />
+      <separator />
+      <menuitem action="TerminalSetSize80x24" />
+      <menuitem action="TerminalSetSize80x43" />
+      <menuitem action="TerminalSetSize132x24" />
+      <menuitem action="TerminalSetSize132x43" />
     </menu>
     <menu action="Tabs">
       <menuitem action="TabsNext" />
