diff --git a/src/uifc/uifc32.c b/src/uifc/uifc32.c
index e39d694478dd5265b961135f1f503a410bbe6f99..235f4f580da5f65afbcecaf60a6a92a571ecae59 100644
--- a/src/uifc/uifc32.c
+++ b/src/uifc/uifc32.c
@@ -91,12 +91,14 @@ static int *last_menu_cur=NULL;
 static int *last_menu_bar=NULL;
 static int save_menu_cur=-1;
 static int save_menu_bar=-1;
+static int save_menu_opts=-1;
 
 static void reset_dynamic(void) {
 	last_menu_cur=NULL;
 	last_menu_bar=NULL;
 	save_menu_cur=-1;
 	save_menu_bar=-1;
+	save_menu_opts=-1;
 }
 
 /****************************************************************************/
@@ -585,7 +587,8 @@ int ulist(int mode, int left, int top, int width, int *cur, int *bar
 			&& last_menu_cur==cur
 			&& last_menu_bar==bar
 			&& save_menu_cur==*cur
-			&& save_menu_bar==*bar)
+			&& save_menu_bar==*bar
+			&& save_menu_opts==opts)
 		is_redraw=1;
 	if(mode&WIN_DYN && mode&WIN_REDRAW)
 		is_redraw=1;
@@ -1514,6 +1517,7 @@ int ulist(int mode, int left, int top, int width, int *cur, int *bar
 		if(mode&WIN_DYN) {
 			save_menu_cur=*cur;
 			save_menu_bar=*bar;
+			save_menu_opts=opts;
 			return(-2-i);
 		}
 	}
@@ -2313,7 +2317,8 @@ void showbuf(int mode, int left, int top, int width, int height, char *title, ch
 			&& last_menu_cur==curp
 			&& last_menu_bar==barp
 			&& save_menu_cur==*curp
-			&& save_menu_bar==*barp)
+			&& save_menu_bar==*barp
+			&& save_menu+opts==opts)
 		is_redraw=1;
 	if(mode&WIN_DYN && mode&WIN_REDRAW)
 		is_redraw=1;