diff --git a/src/nano.c b/src/nano.c
index 93598607fb3813454a20457270e75bbfb3a140b3..3045cd1fbe35bb11f35d7f663f5dceb799de1338 100644
--- a/src/nano.c
+++ b/src/nano.c
@@ -692,6 +692,11 @@ void die_save_file(const char *die_filename, struct stat *die_stat)
 /* Initialize the three window portions nano uses. */
 void window_init(void)
 {
+    /* First delete existing windows, in case of resizing. */
+    delwin(topwin);
+    delwin(edit);
+    delwin(bottomwin);
+
     /* Compute how many lines the edit subwindow will have. */
     editwinrows = LINES - TOP_ROWS - BOTTOM_ROWS;
 
@@ -699,22 +704,6 @@ void window_init(void)
     if (editwinrows <= 0)
 	die(_("Window size is too small for nano...\n"));
 
-#ifndef DISABLE_WRAPJUSTIFY
-    /* Set up fill, based on the screen width. */
-    fill = wrap_at;
-    if (fill <= 0)
-	fill += COLS;
-    if (fill < 0)
-	fill = 0;
-#endif
-
-    if (topwin != NULL)
-	delwin(topwin);
-    if (edit != NULL)
-	delwin(edit);
-    if (bottomwin != NULL)
-	delwin(bottomwin);
-
     /* Set up the windows. */
     topwin = newwin(TOP_ROWS, COLS, 0, 0);
     edit = newwin(editwinrows, COLS, TOP_ROWS, 0);
@@ -726,6 +715,15 @@ void window_init(void)
 	keypad(edit, TRUE);
 	keypad(bottomwin, TRUE);
     }
+
+#ifndef DISABLE_WRAPJUSTIFY
+    /* Set up the wrapping point, accounting for screen width when negative. */
+    fill = wrap_at;
+    if (fill <= 0)
+	fill += COLS;
+    if (fill < 0)
+	fill = 0;
+#endif
 }
 
 #ifndef DISABLE_MOUSE