diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 805a052..123fd33 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -6282,6 +6282,15 @@
 	file.  This means that ":split | edit file" results in two windows
 	with scroll-binding, but ":split file" does not.
 
+			*'scrollfocus'* *'scf'* *'noscrollfocus'* *'noscf'*
+'scrollfocus' 'scf'	boolean  (default off)
+			global
+			{only for MS-Windows GUI}
+	When using the scroll wheel and this option is set, the window under
+	the mouse pointer is scrolled.  With this option off the current
+	window is scrolled.
+	Systems other than MS-Windows behave like this option is on.
+
 						*'scrolljump'* *'sj'*
 'scrolljump' 'sj'	number	(default 1)
 			global
diff --git a/src/gui_w32.c b/src/gui_w32.c
index 3cf782c..02d2e09 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -4234,60 +4234,58 @@
 }
 
 
-/* Intellimouse wheel handler */
+/*
+ * Intellimouse wheel handler.
+ * Treat a mouse wheel event as if it were a scroll request.
+ */
     static void
 _OnMouseWheel(
     HWND hwnd,
     short zDelta)
 {
-/* Treat a mouse wheel event as if it were a scroll request */
     int i;
     int size;
     HWND hwndCtl;
+    win_T *wp;
 
-    if (curwin->w_scrollbars[SBAR_RIGHT].id != 0)
-    {
-	hwndCtl = curwin->w_scrollbars[SBAR_RIGHT].id;
-	size = curwin->w_scrollbars[SBAR_RIGHT].size;
-    }
-    else if (curwin->w_scrollbars[SBAR_LEFT].id != 0)
-    {
-	hwndCtl = curwin->w_scrollbars[SBAR_LEFT].id;
-	size = curwin->w_scrollbars[SBAR_LEFT].size;
-    }
-    else
-	return;
-
-    size = curwin->w_height;
     if (mouse_scroll_lines == 0)
 	init_mouse_wheel();
 
+    wp = gui_mouse_window(FIND_POPUP);
+
 #ifdef FEAT_TEXT_PROP
+    if (wp != NULL && popup_is_popup(wp))
     {
-	win_T *wp = gui_mouse_window(FIND_POPUP);
+	cmdarg_T cap;
+	oparg_T	oa;
 
-	if (wp != NULL && popup_is_popup(wp))
-	{
-	    cmdarg_T cap;
-	    oparg_T	oa;
-
-	    // Mouse hovers over popup window, scroll it if possible.
-	    mouse_row = wp->w_winrow;
-	    mouse_col = wp->w_wincol;
-	    vim_memset(&cap, 0, sizeof(cap));
-	    cap.arg = zDelta < 0 ? MSCR_UP : MSCR_DOWN;
-	    cap.cmdchar = zDelta < 0 ? K_MOUSEUP : K_MOUSEDOWN;
-	    clear_oparg(&oa);
-	    cap.oap = &oa;
-	    nv_mousescroll(&cap);
-	    update_screen(0);
-	    setcursor();
-	    out_flush();
-	    return;
-	}
+	// Mouse hovers over popup window, scroll it if possible.
+	mouse_row = wp->w_winrow;
+	mouse_col = wp->w_wincol;
+	vim_memset(&cap, 0, sizeof(cap));
+	cap.arg = zDelta < 0 ? MSCR_UP : MSCR_DOWN;
+	cap.cmdchar = zDelta < 0 ? K_MOUSEUP : K_MOUSEDOWN;
+	clear_oparg(&oa);
+	cap.oap = &oa;
+	nv_mousescroll(&cap);
+	update_screen(0);
+	setcursor();
+	out_flush();
+	return;
     }
 #endif
 
+    if (wp == NULL || !p_scf)
+	wp = curwin;
+
+    if (wp->w_scrollbars[SBAR_RIGHT].id != 0)
+	hwndCtl = wp->w_scrollbars[SBAR_RIGHT].id;
+    else if (wp->w_scrollbars[SBAR_LEFT].id != 0)
+	hwndCtl = wp->w_scrollbars[SBAR_LEFT].id;
+    else
+	return;
+    size = wp->w_height;
+
     mch_disable_flush();
     if (mouse_scroll_lines > 0
 	    && mouse_scroll_lines < (size > 2 ? size - 2 : 1))
diff --git a/src/option.h b/src/option.h
index 3ee9979..1154aa8 100644
--- a/src/option.h
+++ b/src/option.h
@@ -814,6 +814,9 @@
 EXTERN char_u	*p_pp;		// 'packpath'
 EXTERN char_u	*p_rtp;		// 'runtimepath'
 EXTERN long	p_sj;		// 'scrolljump'
+#if defined(MSWIN) && defined(FEAT_GUI)
+EXTERN int	p_scf;		// 'scrollfocus'
+#endif
 EXTERN long	p_so;		// 'scrolloff'
 EXTERN char_u	*p_sbo;		// 'scrollopt'
 EXTERN char_u	*p_sections;	// 'sections'
diff --git a/src/optiondefs.h b/src/optiondefs.h
index a1d37f8..608593b 100644
--- a/src/optiondefs.h
+++ b/src/optiondefs.h
@@ -2148,6 +2148,13 @@
     {"scrollbind",  "scb",  P_BOOL|P_VI_DEF,
 			    (char_u *)VAR_WIN, PV_SCBIND,
 			    {(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
+    {"scrollfocus", "scf",  P_BOOL|P_VI_DEF,
+#if defined(MSWIN) && defined(FEAT_GUI)
+			    (char_u *)&p_scf, PV_NONE,
+#else
+			    (char_u *)NULL, PV_NONE,
+#endif
+			    {(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
     {"scrolljump",  "sj",   P_NUM|P_VI_DEF|P_VIM,
 			    (char_u *)&p_sj, PV_NONE,
 			    {(char_u *)1L, (char_u *)0L} SCTX_INIT},
diff --git a/src/version.c b/src/version.c
index 182352d..3a8e7ab 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2257,
+/**/
     2256,
 /**/
     2255,
