diff --git a/src/main.c b/src/main.c
index 2a2dcb0..619302a 100644
--- a/src/main.c
+++ b/src/main.c
@@ -375,7 +375,6 @@
      * Set the default values for the options that use Rows and Columns.
      */
     ui_get_shellsize();		// inits Rows and Columns
-    win_init_size();
 #ifdef FEAT_DIFF
     // Set the 'diff' option now, so that it can be checked for in a .vimrc
     // file.  There is no buffer yet though.
@@ -542,6 +541,7 @@
 	    mch_exit(1);
     }
 #endif
+    win_init_size();
 
 #ifdef FEAT_VIMINFO
     /*
diff --git a/src/menu.c b/src/menu.c
index 6a93316..432fbe9 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -436,6 +436,7 @@
 		--curwin->w_height;
 	    curwin->w_winbar_height = h;
 	}
+	curwin->w_prev_height = curwin->w_height;
     }
 
 theend:
diff --git a/src/testdir/test_window_cmd.vim b/src/testdir/test_window_cmd.vim
index a75286f..10cf27d 100644
--- a/src/testdir/test_window_cmd.vim
+++ b/src/testdir/test_window_cmd.vim
@@ -1646,6 +1646,7 @@
           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
@@ -1655,17 +1656,23 @@
               execute tab ? 'tabnew' : ''
               execute winbar ? 'nnoremenu 1.10 WinBar.Test :echo' : ''
               call setline(1, range(1, 256))
-              execute 'norm gg' . pos
-              " No scroll for vertical split and quit
-              vsplit | quit
-              call assert_equal(1, line("w0"))
+              " 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 horizontal split
-              split | redraw! | wincmd k
+              " No scroll for firstwin horizontal split
+              execute 'norm gg' . pos
+              split | redraw | wincmd k
               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
-              resize +2
+              wincmd k | resize +2
               call assert_equal(1, line("w0"))
               wincmd j
               call assert_equal(win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
@@ -1715,7 +1722,7 @@
               call assert_equal(1, line("w0"))
 
               " No scroll in windows split and quit multiple times
-              quit | split | split | quit
+              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
@@ -1740,11 +1747,9 @@
               call assert_equal(6, line("w0"))
               wincmd j
               call assert_equal(5 + win_screenpos(0)[0] - tabline - winbar_sb, line("w0"))
-              only
               endfor
             endfor
           endfor
-          tabonly!
         endfor
       endfor
     endfor
diff --git a/src/version.c b/src/version.c
index 9208d6a..3b143a4 100644
--- a/src/version.c
+++ b/src/version.c
@@ -704,6 +704,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    455,
+/**/
     454,
 /**/
     453,
diff --git a/src/window.c b/src/window.c
index cbe01f0..49f57b5 100644
--- a/src/window.c
+++ b/src/window.c
@@ -3923,6 +3923,7 @@
 win_init_size(void)
 {
     firstwin->w_height = ROWS_AVAIL;
+    firstwin->w_prev_height = ROWS_AVAIL;
     topframe->fr_height = ROWS_AVAIL;
     firstwin->w_width = Columns;
     topframe->fr_width = Columns;
@@ -4069,6 +4070,7 @@
 
 	win_init_size();
 	firstwin->w_winrow = tabline_height();
+	firstwin->w_prev_winrow = firstwin->w_winrow;
 	win_comp_scroll(curwin);
 
 	newtp->tp_topframe = topframe;
@@ -6372,10 +6374,8 @@
 	    {
 		lnum = wp->w_cursor.lnum;
 		wp->w_cursor.lnum = MIN(wp->w_buffer->b_ml.ml_line_count,
-			wp->w_botline - 1 + (wp->w_prev_height
-			    ? (wp->w_winrow - wp->w_prev_winrow)
-					   + (wp->w_height - wp->w_prev_height)
-			    : -WINBAR_HEIGHT(wp)));
+			wp->w_botline - 1 + (wp->w_winrow - wp->w_prev_winrow)
+					  + (wp->w_height - wp->w_prev_height));
 		// Bring the new cursor position to the bottom of the screen.
 		wp->w_fraction = FRACTION_MULT;
 		scroll_to_fraction(wp, wp->w_prev_height);
@@ -6802,6 +6802,9 @@
 	    comp_col();
 	    redraw_all_later(UPD_SOME_VALID);
 	}
+	// Set prev_height when difference is due to 'laststatus'.
+	if (abs(wp->w_height - wp->w_prev_height) == 1)
+	    wp->w_prev_height = wp->w_height;
     }
     else if (fr->fr_layout == FR_ROW)
     {
@@ -7091,6 +7094,8 @@
 	win_comp_pos();
 	if (wp != NULL && close_curwin)
 	    win_goto(wp);
+	if (!p_spsc)
+	    win_fix_scroll(FALSE);
 	redraw_all_later(UPD_NOT_VALID);
     }
     clear_snapshot(curtab, idx);
