diff --git a/ChangeLog b/ChangeLog
index fc5976c3dbb52173c70f512d55a8a00dbd7ff887..6eb75ad787327cd3a70328a141b0b73eea102b41 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -371,7 +371,10 @@ CVS code -
   do_help()
 	- Overhaul for efficiency, and allow scrolling through the help
 	  via the arrow keys as well as the paging keys. (David
-	  Benbennick)
+	  Benbennick)  DLR: Revert the use of the return value of
+	  curs_set() to restore the previous state of the cursor, as
+	  some curses implementations (including slang) get it wrong,
+	  and explicitly turn the cursor off where needed instead.
   do_credits()
 	- Use napms() instead of nanosleep(), as it does the same thing
 	  (aside from taking an argument in milliseconds instead of
diff --git a/src/files.c b/src/files.c
index f1588a3a602d92db6ee3832b8dc14e0ca4388d1c..defdd209b0e893a6661c1a6e5816c52dfcc98389 100644
--- a/src/files.c
+++ b/src/files.c
@@ -2683,6 +2683,7 @@ char *do_browser(const char *inpath)
 	case NANO_HELP_FKEY:
 	case '?': /* Pico compatibility */
 	    do_help();
+	    curs_set(0);
 	    break;
 	case NANO_ENTER_KEY:
 	case 'S': /* Pico compatibility */
diff --git a/src/winio.c b/src/winio.c
index 2c09e5ba14cf1a5ee7425d510ed525c8d1b7de4a..cd129db9c37bd16e8452d1ca3cbf72b5a2629e84 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -3022,13 +3022,13 @@ int do_help(void)
     int kbinput = ERR, meta_key;
 
     int old_no_help = ISSET(NO_HELP);
-    int old_cursor = curs_set(0);
 #ifndef DISABLE_MOUSE
     const shortcut *oldshortcut = currshortcut;
 	/* We will set currshortcut to allow clicking on the help
 	   screen shortcut list. */
 #endif
 
+    curs_set(0);
     blank_edit();
     wattroff(bottomwin, A_REVERSE);
     blank_statusbar();
@@ -3127,7 +3127,7 @@ int do_help(void)
     } else
 	bottombars(currshortcut);
 
-    curs_set(old_cursor);
+    curs_set(1);
     edit_refresh();
 
     /* The help_init() at the beginning allocated help_text, which has