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,
