diff --git a/src/gui.c b/src/gui.c
index d77a146..ec3af28 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -4201,22 +4201,22 @@
     win_T	*wp = NULL;
 
     need_mouse_correct = FALSE;
-    if (gui.in_use && p_mousef)
+
+    if (!(gui.in_use && p_mousef))
+	return;
+
+    gui_mch_getmouse(&x, &y);
+    /* Don't move the mouse when it's left or right of the Vim window */
+    if (x < 0 || x > Columns * gui.char_width)
+	return;
+    if (y >= 0)
+	wp = xy2win(x, y);
+    if (wp != curwin && wp != NULL)	/* If in other than current window */
     {
-	x = gui_mch_get_mouse_x();
-	/* Don't move the mouse when it's left or right of the Vim window */
-	if (x < 0 || x > Columns * gui.char_width)
-	    return;
-	y = gui_mch_get_mouse_y();
-	if (y >= 0)
-	    wp = xy2win(x, y);
-	if (wp != curwin && wp != NULL)	/* If in other than current window */
-	{
-	    validate_cline_row();
-	    gui_mch_setmouse((int)W_ENDCOL(curwin) * gui.char_width - 3,
-			 (W_WINROW(curwin) + curwin->w_wrow) * gui.char_height
+	validate_cline_row();
+	gui_mch_setmouse((int)W_ENDCOL(curwin) * gui.char_width - 3,
+		(W_WINROW(curwin) + curwin->w_wrow) * gui.char_height
 						     + (gui.char_height) / 2);
-	}
     }
 }
 
diff --git a/src/gui_kde_x11.cc b/src/gui_kde_x11.cc
index 32fb747..21d4a04 100644
--- a/src/gui_kde_x11.cc
+++ b/src/gui_kde_x11.cc
@@ -1303,19 +1303,13 @@
 }//}}}
 
 /*
- * Get current y mouse coordinate in text window.
- * Return -1 when unknown.
+ * Get current mouse coordinates in text window.
  */
-    int
-gui_mch_get_mouse_x(void)//{{{
+    void
+gui_mch_getmouse(int *x, int *y)//{{{
 {
-    return vmw->mapFromGlobal(QCursor::pos()).x();
-}//}}}
-
-    int
-gui_mch_get_mouse_y(void)//{{{
-{
-    return vmw->mapFromGlobal(QCursor::pos()).y();
+    *x = vmw->mapFromGlobal(QCursor::pos()).x();
+    *y = vmw->mapFromGlobal(QCursor::pos()).y();
 }//}}}
 
     void
diff --git a/src/gui_mac.c b/src/gui_mac.c
index 3b73339..b930852 100644
--- a/src/gui_mac.c
+++ b/src/gui_mac.c
@@ -5672,27 +5672,16 @@
 #endif
 
 /*
- * Get current y mouse coordinate in text window.
- * Return -1 when unknown.
+ * Get current mouse coordinates in text window.
  */
-    int
-gui_mch_get_mouse_x()
+void gui_mch_getmouse(int *x, int *y)
 {
     Point where;
 
     GetMouse(&where);
 
-    return (where.h);
-}
-
-    int
-gui_mch_get_mouse_y()
-{
-    Point where;
-
-    GetMouse(&where);
-
-    return (where.v);
+    *x = where.h;
+    *y = where.v;
 }
 
     void
diff --git a/src/gui_photon.c b/src/gui_photon.c
index 9223a40..fc96cc1 100644
--- a/src/gui_photon.c
+++ b/src/gui_photon.c
@@ -1896,29 +1896,18 @@
 }
 
     int
-gui_mch_get_mouse_x(void)
+gui_mch_getmouse(int *x, int *y)
 {
     PhCursorInfo_t info;
-    short x, y;
+    short ix, iy;
 
     /* FIXME: does this return the correct position,
      * with respect to the border? */
     PhQueryCursor( PhInputGroup( NULL ), &info );
-    PtGetAbsPosition( gui.vimTextArea , &x, &y );
+    PtGetAbsPosition( gui.vimTextArea , &ix, &iy );
 
-    return( info.pos.x - x );
-}
-
-    int
-gui_mch_get_mouse_y(void)
-{
-    PhCursorInfo_t info;
-    short x, y;
-
-    PhQueryCursor( PhInputGroup( NULL ), &info );
-    PtGetAbsPosition( gui.vimTextArea , &x, &y );
-    /* TODO: Add border offset? */
-    return( info.pos.y - y );
+    *x = info.pos.x - ix;
+    *y = info.pos.y - iy;
 }
 
     void
diff --git a/src/gui_riscos.c b/src/gui_riscos.c
index 07cbc75..2c40514 100644
--- a/src/gui_riscos.c
+++ b/src/gui_riscos.c
@@ -3014,40 +3014,26 @@
 }
 
 /*
- * Get current x mouse coordinate in text window.
+ * Get current mouse coordinates in text window.
  * Note: (0,0) is the bottom left corner, positive y is UP.
- * Return -1 when unknown.
  */
-    int
-gui_mch_get_mouse_x()
+    void
+gui_mch_getmouse(x, y)
+    int *x;
+    int *y;
 {
     int left;
-    int block[10];
-
-    block[0] = gui.window_handle;
-    swi(Wimp_GetWindowState, 0, block);
-    left = block[1];
-
-    swi(Wimp_GetPointerInfo, 0, block);
-    return block[0] - left;
-}
-
-/*
- * Get current y mouse coordinate in text window.
- * Return -1 when unknown.
- */
-    int
-gui_mch_get_mouse_y()
-{
     int top;
     int block[10];
 
     block[0] = gui.window_handle;
     swi(Wimp_GetWindowState, 0, block);
+    left = block[1];
     top = block[4];
 
     swi(Wimp_GetPointerInfo, 0, block);
-    return top - block[1];
+    *x = block[0] - left;
+    *y = top - block[1];
 }
 
 /* MouseTo(x, y) */
diff --git a/src/gui_w32.c b/src/gui_w32.c
index cf07b26..e0b545c 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -3184,6 +3184,8 @@
     int		nameLen;
     int		padding0, padding1, padding2 = 0;
     int		sepPadding=0;
+    int		x;
+    int		y;
 #ifdef USE_SYSMENU_FONT
     LOGFONT	lfSysmenu;
     int		use_lfSysmenu = FALSE;
@@ -3304,12 +3306,13 @@
     *p++ = HIWORD(lExtendedStyle);
     pnumitems = p;	/* save where the number of items must be stored */
     *p++ = 0;		// NumberOfItems(will change later)
+    gui_mch_getmouse(&x, &y);
     if (initX == 0xffffL)
-	*p++ = PixelToDialogX(gui_mch_get_mouse_x()); // x
+	*p++ = PixelToDialogX(x); // x
     else
 	*p++ = PixelToDialogX(initX); // x
     if (initY == 0xffffL)
-	*p++ = PixelToDialogY(gui_mch_get_mouse_y()); // y
+	*p++ = PixelToDialogY(y); // y
     else
 	*p++ = PixelToDialogY(initY); // y
     *p++ = PixelToDialogX(dlgwidth);    // cx
diff --git a/src/gui_w48.c b/src/gui_w48.c
index 77cc24d..33edfd3 100644
--- a/src/gui_w48.c
+++ b/src/gui_w48.c
@@ -2411,33 +2411,18 @@
 #endif
 
 /*
- * Get current x mouse coordinate in text window.
- * Return -1 when unknown.
+ * Get current mouse coordinates in text window.
  */
-    int
-gui_mch_get_mouse_x(void)
+    void
+gui_mch_get_mouse_(int *x, int *y)
 {
     RECT rct;
     POINT mp;
 
     (void)GetWindowRect(s_textArea, &rct);
     (void)GetCursorPos((LPPOINT)&mp);
-    return (int)(mp.x - rct.left);
-}
-
-/*
- * Get current y mouse coordinate in text window.
- * Return -1 when unknown.
- */
-    int
-gui_mch_get_mouse_y(void)
-{
-    RECT rct;
-    POINT mp;
-
-    (void)GetWindowRect(s_textArea, &rct);
-    (void)GetCursorPos((LPPOINT)&mp);
-    return (int)(mp.y - rct.top);
+    *x = (int)(mp.x - rct.left);
+    *y = (int)(mp.y - rct.top);
 }
 
 /*
diff --git a/src/misc2.c b/src/misc2.c
index db091b5..1633b2a 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -3026,7 +3026,9 @@
     if (mouse && (State == HITRETURN || State == ASKMORE))
     {
 # ifdef FEAT_GUI
-	if (Y_2_ROW(gui_mch_get_mouse_y()) == Rows - 1)
+	int x, y;
+	gui_mch_getmouse(&x, &y);
+	if (Y_2_ROW(y) == Rows - 1)
 	    return SHAPE_IDX_MOREL;
 # endif
 	return SHAPE_IDX_MORE;
diff --git a/src/proto/gui_gtk_x11.pro b/src/proto/gui_gtk_x11.pro
index d70a7b8..62889d2 100644
--- a/src/proto/gui_gtk_x11.pro
+++ b/src/proto/gui_gtk_x11.pro
@@ -57,8 +57,7 @@
 void gui_mch_draw_menubar __ARGS((void));
 void gui_mch_enable_scrollbar __ARGS((scrollbar_T *sb, int flag));
 long_u gui_mch_get_rgb __ARGS((guicolor_T pixel));
-int gui_mch_get_mouse_x __ARGS((void));
-int gui_mch_get_mouse_y __ARGS((void));
+void gui_mch_getmouse __ARGS((int *x, int *y));
 void gui_mch_setmouse __ARGS((int x, int y));
 void gui_mch_mousehide __ARGS((int hide));
 void mch_set_mouse_shape __ARGS((int shape));
diff --git a/src/proto/gui_kde_x11.pro b/src/proto/gui_kde_x11.pro
index cae8208..eb6a286 100644
--- a/src/proto/gui_kde_x11.pro
+++ b/src/proto/gui_kde_x11.pro
@@ -52,8 +52,7 @@
 void gui_mch_draw_menubar __ARGS((void));
 void gui_mch_enable_scrollbar __ARGS((scrollbar_T *sb, int flag));
 long_u gui_mch_get_rgb __ARGS((guicolor_T pixel));
-int gui_mch_get_mouse_x __ARGS((void));
-int gui_mch_get_mouse_y __ARGS((void));
+void gui_mch_getmouse __ARGS((int *x, int *y));
 void gui_mch_setmouse __ARGS((int x, int y));
 void gui_mch_mousehide __ARGS((int hide));
 void mch_set_mouse_shape __ARGS((int shape));
diff --git a/src/proto/gui_mac.pro b/src/proto/gui_mac.pro
index 6f595e2..b5a4638 100644
--- a/src/proto/gui_mac.pro
+++ b/src/proto/gui_mac.pro
@@ -17,8 +17,7 @@
 void gui_mch_set_blinking __ARGS((long wait, long on, long off));
 void gui_mch_stop_blink __ARGS((void));
 void gui_mch_start_blink __ARGS((void));
-int gui_mch_get_mouse_x __ARGS((void));
-int gui_mch_get_mouse_y __ARGS((void));
+void gui_mch_getmouse __ARGS((int *x, int *y));
 void gui_mch_setmouse __ARGS((int x, int y));
 void gui_mch_prepare __ARGS((int *argc, char **argv));
 int gui_mch_init_check __ARGS((void));
diff --git a/src/proto/gui_photon.pro b/src/proto/gui_photon.pro
index 54a5659..af33ef5 100644
--- a/src/proto/gui_photon.pro
+++ b/src/proto/gui_photon.pro
@@ -23,8 +23,7 @@
 void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb));
 void mch_set_mouse_shape __ARGS((int shape));
 void gui_mch_mousehide __ARGS((int hide));
-int gui_mch_get_mouse_x __ARGS((void));
-int gui_mch_get_mouse_y __ARGS((void));
+void gui_mch_getmouse __ARGS((int *x, int *y));
 void gui_mch_setmouse __ARGS((int x, int y));
 long_u gui_mch_get_rgb __ARGS((guicolor_T pixel));
 void gui_mch_new_colors __ARGS((void));
diff --git a/src/proto/gui_w16.pro b/src/proto/gui_w16.pro
index f6b1b4a..1b07a00 100644
--- a/src/proto/gui_w16.pro
+++ b/src/proto/gui_w16.pro
@@ -39,8 +39,7 @@
 void gui_mch_replace_dialog __ARGS((exarg_T *eap));
 void gui_mch_mousehide __ARGS((int hide));
 void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb));
-int gui_mch_get_mouse_x __ARGS((void));
-int gui_mch_get_mouse_y __ARGS((void));
+void gui_mch_getmouse __ARGS((int *x, int *y));
 void gui_mch_setmouse __ARGS((int x, int y));
 void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h));
 void gui_mch_flash __ARGS((int msec));
diff --git a/src/proto/gui_w32.pro b/src/proto/gui_w32.pro
index a8c9793..8eca7f1 100644
--- a/src/proto/gui_w32.pro
+++ b/src/proto/gui_w32.pro
@@ -39,8 +39,7 @@
 void gui_mch_replace_dialog __ARGS((exarg_T *eap));
 void gui_mch_mousehide __ARGS((int hide));
 void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb));
-int gui_mch_get_mouse_x __ARGS((void));
-int gui_mch_get_mouse_y __ARGS((void));
+void gui_mch_getmouse __ARGS((int *x, int *y));
 void gui_mch_setmouse __ARGS((int x, int y));
 void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h));
 void gui_mch_flash __ARGS((int msec));
