diff --git a/src/testdir/test_window_cmd.vim b/src/testdir/test_window_cmd.vim
index cbf2db5..d0be91e 100644
--- a/src/testdir/test_window_cmd.vim
+++ b/src/testdir/test_window_cmd.vim
@@ -1637,127 +1637,119 @@
 func Test_splitscroll_with_splits()
   set nowrap
   set nosplitscroll
+
+  " disallow window resizing
+  let save_WS = &t_WS
+  set t_WS=
+
   let gui = has("gui_running")
-  inoremap c <cmd>:copen<CR>
-  for winbar in [0, 1]
-    for sb in [0, 1]
-      for ea in [0, 1]
-        for tab in [0, 1]
-          for so in [0, 5]
-            for ls in range(0, 2)
-              for pos in ["H", "M", "L"]
-              tabnew | tabonly! | redraw
-              let tabline = (gui ? 0 : (tab ? 1 : 0))
-              let winbar_sb = (sb ? winbar : 0)
-              execute 'set scrolloff=' . so
-              execute 'set laststatus=' . ls
-              execute 'set ' . (ea ? 'equalalways' : 'noequalalways')
-              execute 'set ' . (sb ? 'splitbelow' : 'nosplitbelow')
-              execute tab ? 'tabnew' : ''
-              execute winbar ? 'nnoremenu 1.10 WinBar.Test :echo' : ''
-              call setline(1, range(1, 256))
-              " No scroll for restore_snapshot
-              norm G
-              try
-                copen | close | colder
-              catch /E380/
-              endtry
-              call assert_equal(257 - winheight(0), line("w0"))
+  inoremap <expr> c "<cmd>copen<bar>wincmd k<CR>"
+  for run in range(0, 10)
+    tabnew | tabonly! | redraw    
+    let tabline = (gui ? 0 : ((run % 5) ? 1 : 0))
+    let winbar_sb = (run % 2) && (run % 3)
+    execute 'set scrolloff=' . !(run % 3) ? 0 : run
+    execute 'set laststatus=' . (run % 3)
+    execute 'set ' . ((run % 2) ? 'equalalways' : 'noequalalways')
+    execute 'set ' . ((run % 3) ? 'splitbelow' : 'nosplitbelow')
+    execute (run % 5) ? 'tabnew' : ''
+    execute (run % 2) ? 'nnoremenu 1.10 WinBar.Test :echo' : ''
+    let pos = !(run % 3) ? 'H' : ((run % 2) ? 'M' : 'L')
+    call setline(1, range(1, 256))
+    " No scroll for restore_snapshot
+    norm G
+    try
+      copen | close | colder
+    catch /E380/
+    endtry
+    call assert_equal(257 - winheight(0), line("w0"))
 
-              " No scroll for firstwin horizontal split
-              execute 'norm gg' . pos
-              split | redraw | wincmd k
-              call assert_equal(1, line("w0"))
-              call assert_equal(&scroll, winheight(0) / 2)
-              wincmd j
-              call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
+    " No scroll for firstwin horizontal split
+    execute 'norm gg' . pos
+    split | redraw | wincmd k
+    call assert_equal(1, line("w0"))
+    call assert_equal(&scroll, winheight(0) / 2)
+    wincmd j
+    call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
 
-              " No scroll when resizing windows
-              wincmd k | resize +2
-              call assert_equal(1, line("w0"))
-              wincmd j
-              call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
+    " No scroll when resizing windows
+    wincmd k | resize +2
+    call assert_equal(1, line("w0"))
+    wincmd j
+    call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
 
-              " No scroll when dragging statusline
-              call win_move_statusline(1, -3)
-              call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
-              wincmd k
-              call assert_equal(1, line("w0"))
+    " No scroll when dragging statusline
+    call win_move_statusline(1, -3)
+    call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
+    wincmd k
+    call assert_equal(1, line("w0"))
 
-              " No scroll when changing shellsize
-              set lines+=2
-              call assert_equal(1, line("w0"))
-              wincmd j
-              call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
-              set lines-=2
-              call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
-              wincmd k
-              call assert_equal(1, line("w0"))
+    " No scroll when changing shellsize
+    set lines+=2
+    call assert_equal(1, line("w0"))
+    wincmd j
+    call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
+    set lines-=2
+    call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
+    wincmd k
+    call assert_equal(1, line("w0"))
 
-              " No scroll when equalizing windows
-              wincmd =
-              call assert_equal(1, line("w0"))
-              wincmd j
-              call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
-              wincmd k
-              call assert_equal(1, line("w0"))
+    " No scroll when equalizing windows
+    wincmd =
+    call assert_equal(1, line("w0"))
+    wincmd j
+    call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
+    wincmd k
+    call assert_equal(1, line("w0"))
 
-              " No scroll in windows split multiple times
-              vsplit | split | 4wincmd w
-              call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
-              1wincmd w | quit | wincmd l | split
-              call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
-              wincmd j
-              call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
+    " No scroll in windows split multiple times
+    vsplit | split | 4wincmd w
+    call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
+    1wincmd w | quit | wincmd l | split
+    call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
+    wincmd j
+    call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
 
-              " No scroll in small window
-              2wincmd w | only | 5split | wincmd k
-              call assert_equal(1, line("w0"))
-              wincmd j
-              call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
+    " No scroll in small window
+    2wincmd w | only | 5split | wincmd k
+    call assert_equal(1, line("w0"))
+    wincmd j
+    call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
 
-              " No scroll for vertical split
-              quit | vsplit | wincmd l
-              call assert_equal(1, line("w0"))
-              wincmd h
-              call assert_equal(1, line("w0"))
+    " No scroll for vertical split
+    quit | vsplit | wincmd l
+    call assert_equal(1, line("w0"))
+    wincmd h
+    call assert_equal(1, line("w0"))
 
-              " No scroll in windows split and quit multiple times
-              quit | redraw | split | redraw | split | redraw | quit | redraw
-              call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
+    " No scroll in windows split and quit multiple times
+    quit | redraw | split | redraw | split | redraw | quit | redraw
+    call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
 
-              " No scroll for new buffer
-              1wincmd w | only | copen | wincmd k
-              call assert_equal(1, line("w0"))
-              only
-              call assert_equal(1, line("w0"))
-              above copen | wincmd j
-              call assert_equal(win_screenpos(0)[0] - tabline, line("w0"))
+    " No scroll for new buffer
+    1wincmd w | only | copen | wincmd k
+    call assert_equal(1, line("w0"))
+    only
+    call assert_equal(1, line("w0"))
+    above copen | wincmd j
+    call assert_equal(win_screenpos(0)[0] - tabline, line("w0"))
 
-              " No scroll when opening cmdwin, and no cursor move when closing
-              " cmdwin.
-              only | norm ggL
-              let curpos = getcurpos()
-              norm q:
-              call assert_equal(1, line("w0"))
-              call assert_equal(curpos, getcurpos())
+    " No scroll when opening cmdwin, and no cursor move when closing cmdwin.
+    only | norm ggL
+    let curpos = getcurpos()
+    norm q:
+    call assert_equal(1, line("w0"))
+    call assert_equal(curpos, getcurpos())
 
-              " Scroll when cursor becomes invalid in insert mode
-              norm Lic
-              wincmd k | only
-              call assert_notequal(1, line("w0"))
+    " Scroll when cursor becomes invalid in insert mode
+    norm Lic
+    call assert_equal(curpos, getcurpos())
 
-              " No scroll when topline not equal to 1
-              execute "norm gg5\<C-e>" | split | wincmd k
-              call assert_equal(6, line("w0"))
-              wincmd j
-              call assert_equal(5 + win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
-              endfor
-            endfor
-          endfor
-        endfor
-      endfor
-    endfor
+    " No scroll when topline not equal to 1
+    only | execute "norm gg5\<C-e>" | split | wincmd k
+    call assert_equal(6, line("w0"))
+    wincmd j
+    call assert_equal(5 + win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
   endfor
 
   tabnew | tabonly! | %bwipeout!
@@ -1768,6 +1760,7 @@
   set laststatus&
   set equalalways&
   set splitscroll&
+  let &t_WS = save_WS
 endfunc
 
 function Test_nosplitscroll_cmdwin_cursor_position()
diff --git a/src/version.c b/src/version.c
index 6155446..b45a691 100644
--- a/src/version.c
+++ b/src/version.c
@@ -704,6 +704,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    478,
+/**/
     477,
 /**/
     476,
diff --git a/src/window.c b/src/window.c
index fc7b8df..2e4a806 100644
--- a/src/window.c
+++ b/src/window.c
@@ -6403,7 +6403,6 @@
     static void
 win_fix_cursor(int normal)
 {
-    int      top = FALSE;
     win_T    *wp = curwin;
     long     so = get_scrolloff_value();
     linenr_T nlnum = 0;
@@ -6418,7 +6417,7 @@
     so = MIN(wp->w_height / 2, so);
     // Check if cursor position is above topline or below botline.
     if (wp->w_cursor.lnum < (wp->w_topline + so) && wp->w_topline != 1)
-	top = nlnum = MIN(wp->w_topline + so, wp->w_buffer->b_ml.ml_line_count);
+	nlnum = MIN(wp->w_topline + so, wp->w_buffer->b_ml.ml_line_count);
     else if (wp->w_cursor.lnum > (wp->w_botline - so - 1)
 	    && (wp->w_botline - wp->w_buffer->b_ml.ml_line_count) != 1)
 	nlnum = MAX(wp->w_botline - so - 1, 1);
@@ -6436,7 +6435,11 @@
 	}
 	else
 	{   // Ensure cursor stays visible if we are not in normal mode.
-	    wp->w_fraction = top ? 0 : FRACTION_MULT;
+	    wp->w_fraction = 0.5 * FRACTION_MULT;
+	    // Make sure cursor is closer to topline than botline.
+	    if (so == wp->w_height / 2
+			  && nlnum - wp->w_topline > wp->w_botline - 1 - nlnum)
+		wp->w_fraction++;
 	    scroll_to_fraction(wp, wp->w_prev_height);
 	}
     }
