--- a/src/terminal-options.c
+++ b/src/terminal-options.c
@@ -583,10 +583,6 @@ option_geometry_callback (const gchar *o
 {
   TerminalOptions *options = data;
 
-  /* See https://bugzilla.gnome.org/show_bug.cgi?id=760944 */
-  if (gtk_check_version (3, 19, 5) == NULL)
-    return unsupported_option_callback (option_name, value, data, error);
-
   if (options->initial_windows)
     {
       InitialWindow *iw;
--- a/src/terminal-window.c
+++ b/src/terminal-window.c
@@ -3562,8 +3562,9 @@ terminal_window_update_geometry (Termina
   GtkWidget *widget;
   GdkGeometry hints;
   GtkBorder padding;
-  int char_width;
-  int char_height;
+  GtkRequisition toplevel_request, widget_request;
+  int base_width, base_height;
+  int char_width, char_height;
   
   if (priv->active_screen == NULL)
     return;
@@ -3577,18 +3578,24 @@ terminal_window_update_geometry (Termina
    */
   terminal_screen_get_cell_size (priv->active_screen, &char_width, &char_height);
   
-  gtk_style_context_get_padding(gtk_widget_get_style_context(widget),
-                                gtk_widget_get_state_flags(widget),
-                                &padding);
-
   if (char_width != priv->old_char_width ||
       char_height != priv->old_char_height ||
       padding.left + padding.right != priv->old_base_width ||
       padding.top + padding.bottom != priv->old_base_height ||
       widget != (GtkWidget*) priv->old_geometry_widget)
     {
-      hints.base_width = padding.left + padding.right;
-      hints.base_height = padding.top + padding.bottom;
+      gtk_widget_get_preferred_size (GTK_WIDGET (window), NULL, &toplevel_request);
+      gtk_widget_get_preferred_size (widget, NULL, &widget_request);
+
+      base_width = toplevel_request.width - widget_request.width;
+      base_height = toplevel_request.height - widget_request.height;
+
+      gtk_style_context_get_padding (gtk_widget_get_style_context (widget),
+                                     gtk_widget_get_state_flags (widget),
+                                     &padding);
+ 
+      hints.base_width = base_width + padding.left + padding.right;
+      hints.base_height = base_height + padding.top + padding.bottom;
 
 #define MIN_WIDTH_CHARS 4
 #define MIN_HEIGHT_CHARS 1
@@ -3596,12 +3603,12 @@ terminal_window_update_geometry (Termina
       hints.width_inc = char_width;
       hints.height_inc = char_height;
 
-      /* min size is min size of just the geometry widget, remember. */
+      /* min size is min size of the whole window, remember. */
       hints.min_width = hints.base_width + hints.width_inc * MIN_WIDTH_CHARS;
       hints.min_height = hints.base_height + hints.height_inc * MIN_HEIGHT_CHARS;
       
       gtk_window_set_geometry_hints (GTK_WINDOW (window),
-                                     widget,
+                                     NULL,
                                      &hints,
                                      GDK_HINT_RESIZE_INC |
                                      GDK_HINT_MIN_SIZE |
