diff --git a/src/gui_beval.c b/src/gui_beval.c
index abff1b0..61ff2fc 100644
--- a/src/gui_beval.c
+++ b/src/gui_beval.c
@@ -1177,23 +1177,15 @@
 	int		x_offset = EVAL_OFFSET_X;
 	int		y_offset = EVAL_OFFSET_Y;
 	PangoLayout	*layout;
-# if GTK_CHECK_VERSION(3,22,2)
-	GdkRectangle rect;
-	GdkMonitor * const mon = gdk_display_get_monitor_at_window(
-		gtk_widget_get_display(beval->balloonShell),
-		gtk_widget_get_window(beval->balloonShell));
-	gdk_monitor_get_geometry(mon, &rect);
 
-	screen_w = rect.width;
-	screen_h = rect.height;
-# else
+# if !GTK_CHECK_VERSION(3,22,2)
 	GdkScreen	*screen;
 
 	screen = gtk_widget_get_screen(beval->target);
 	gtk_window_set_screen(GTK_WINDOW(beval->balloonShell), screen);
-	screen_w = gdk_screen_get_width(screen);
-	screen_h = gdk_screen_get_height(screen);
 # endif
+	gui_gtk_get_screen_size_of_win(beval->balloonShell,
+							 &screen_w, &screen_h);
 # if !GTK_CHECK_VERSION(3,0,0)
 	gtk_widget_ensure_style(beval->balloonShell);
 	gtk_widget_ensure_style(beval->balloonLabel);
diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c
index 361f16c..5109865 100644
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -4941,6 +4941,29 @@
     gui_mch_update();
 }
 
+    void
+gui_gtk_get_screen_size_of_win(GtkWidget *win, int *width, int *height)
+{
+#if GTK_CHECK_VERSION(3,22,0)
+    GdkDisplay *dpy = gtk_widget_get_display(win);
+    GdkWindow *win = gtk_widget_get_window(win);
+    GdkMonitor *monitor = gdk_display_get_monitor_at_window(dpy, win);
+    GdkRectangle geometry;
+
+    gdk_monitor_get_geometry(monitor, &geometry);
+    *width = geometry.width;
+    *height = geometry.height;
+#else
+    GdkScreen* screen;
+
+    if (win != NULL && gtk_widget_has_screen(win))
+	screen = gtk_widget_get_screen(win);
+    else
+	screen = gdk_screen_get_default();
+    *width = gdk_screen_get_width(screen);
+    *height = gdk_screen_get_height(screen);
+#endif
+}
 
 /*
  * The screen size is used to make sure the initial window doesn't get bigger
@@ -4950,30 +4973,11 @@
     void
 gui_mch_get_screen_dimensions(int *screen_w, int *screen_h)
 {
-#if GTK_CHECK_VERSION(3,22,2)
-    GdkRectangle rect;
-    GdkMonitor * const mon = gdk_display_get_monitor_at_window(
-	    gtk_widget_get_display(gui.mainwin),
-	    gtk_widget_get_window(gui.mainwin));
-    gdk_monitor_get_geometry(mon, &rect);
+    gui_gtk_get_screen_size_of_win(gui.mainwin, screen_w, screen_h);
 
-    *screen_w = rect.width;
     /* Subtract 'guiheadroom' from the height to allow some room for the
      * window manager (task list and window title bar). */
-    *screen_h = rect.height - p_ghr;
-#else
-    GdkScreen* screen;
-
-    if (gui.mainwin != NULL && gtk_widget_has_screen(gui.mainwin))
-	screen = gtk_widget_get_screen(gui.mainwin);
-    else
-	screen = gdk_screen_get_default();
-
-    *screen_w = gdk_screen_get_width(screen);
-    /* Subtract 'guiheadroom' from the height to allow some room for the
-     * window manager (task list and window title bar). */
-    *screen_h = gdk_screen_get_height(screen) - p_ghr;
-#endif
+    *screen_h -= p_ghr;
 
     /*
      * FIXME: dirty trick: Because the gui_get_base_height() doesn't include
diff --git a/src/mbyte.c b/src/mbyte.c
index f279bde..4df2397 100644
--- a/src/mbyte.c
+++ b/src/mbyte.c
@@ -4871,8 +4871,7 @@
     if (preedit_window == NULL)
 	return;
 
-    sw = gdk_screen_get_width(gtk_widget_get_screen(preedit_window));
-    sh = gdk_screen_get_height(gtk_widget_get_screen(preedit_window));
+    gui_gtk_get_screen_size_of_win(preedit_window, &sw, &sh);
 #if GTK_CHECK_VERSION(3,0,0)
     gdk_window_get_origin(gtk_widget_get_window(gui.drawarea), &x, &y);
 #else
diff --git a/src/proto/gui_gtk_x11.pro b/src/proto/gui_gtk_x11.pro
index aaf710c..51546ae 100644
--- a/src/proto/gui_gtk_x11.pro
+++ b/src/proto/gui_gtk_x11.pro
@@ -25,6 +25,7 @@
 void gui_mch_unmaximize(void);
 void gui_mch_newfont(void);
 void gui_mch_set_shellsize(int width, int height, int min_width, int min_height, int base_width, int base_height, int direction);
+void gui_gtk_get_screen_size_of_win(GtkWidget *win, int *width, int *height);
 void gui_mch_get_screen_dimensions(int *screen_w, int *screen_h);
 void gui_mch_settitle(char_u *title, char_u *icon);
 void gui_mch_enable_menu(int showit);
diff --git a/src/version.c b/src/version.c
index 8c610b7..acf6e29 100644
--- a/src/version.c
+++ b/src/version.c
@@ -770,6 +770,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1084,
+/**/
     1083,
 /**/
     1082,
