diff --git a/src/browser.c b/src/browser.c
index 6d28e18a273ce6321d89f64a7046c2edc78da637..7b2a36766436046b6dea22ac0228ae8f3e592435 100644
--- a/src/browser.c
+++ b/src/browser.c
@@ -160,6 +160,7 @@ char *do_browser(char *path, DIR *dir)
 	    /* Redraw the screen. */
 	    case NANO_REFRESH_KEY:
 		total_redraw();
+		kbinput = ERR;
 		break;
 	    case NANO_HELP_KEY:
 #ifndef DISABLE_HELP
@@ -351,11 +352,9 @@ char *do_browser(char *path, DIR *dir)
 		goto change_browser_directory;
 	}
 
-	/* Display the file list if we don't have a key, we do have a
-	 * key and the selected file has changed, or if we haven't
-	 * updated the screen already. */
-	if ((kbinput == ERR || old_selected == selected) && kbinput !=
-		NANO_REFRESH_KEY)
+	/* Display the file list if we don't have a key, or if we do
+	 * have a key and the selected file has changed. */
+	if (kbinput == ERR || old_selected == selected)
 	    browser_refresh();
 
 	kbinput = get_kbinput(edit, &meta_key, &func_key);
diff --git a/src/help.c b/src/help.c
index dc1a74afc0369a0c36fb5b79e8b4337d33ef2b7b..799e131b0b6e6b4f83310a13f29116a214fd5a00 100644
--- a/src/help.c
+++ b/src/help.c
@@ -107,6 +107,7 @@ void do_help(void (*refresh_func)(void))
 #endif
 	    case NANO_REFRESH_KEY:
 		total_redraw();
+		kbinput = ERR;
 		break;
 	    case NANO_PREVPAGE_KEY:
 		if (line > editwinrows - 2)
@@ -138,11 +139,9 @@ void do_help(void (*refresh_func)(void))
 		break;
 	}
 
-	/* Display the help text if we don't have a key, we do have a
-	 * key and the help text has moved, or if we haven't updated the
-	 * screen already. */
-	if ((kbinput == ERR || line != old_line) && kbinput !=
-		NANO_REFRESH_KEY) {
+	/* Display the help text if we don't have a key, or if we do
+	 * have a key and the help text has moved. */
+	if (kbinput == ERR || line != old_line) {
 	    blank_edit();
 
 	    /* Calculate where in the text we should be, based on the