diff --git a/clim/menus.lisp b/clim/menus.lisp
index bca8b2641b6f737aba8f69dc10c01475dbaeb673..51fa2a97a44cd0816f4839595f2ad5bd76e84b2a 100644
--- a/clim/menus.lisp
+++ b/clim/menus.lisp
@@ -463,8 +463,10 @@
                                       (not (window-visibility menu)))
                              (return-from menu-choose-from-drawer nil))
                            ;; Take care of highlighting
-                           (highlight-presentation-of-context-type menu)))
-                  (declare (dynamic-extent #'input-wait-test #'input-wait-handler))
+                           (highlight-presentation-of-context-type menu))
+                         (wait-for-window-exposed (menu)
+                           (process-wait nil (lambda () (window-visibility menu)))))
+                  (declare (dynamic-extent #'input-wait-test #'input-wait-handler #'wait-for-window-exposed))
                   ;; Await exposure before going any further, since X can get
                   ;; to the call to READ-GESTURE before the menu is visible.
                   (when *abort-menus-when-buried*