diff --git a/retroarch.c b/retroarch.c
index cc9389e266..9fe5611a4b 100644
--- a/retroarch.c
+++ b/retroarch.c
@@ -4137,10 +4137,20 @@ static enum runloop_state runloop_check_state(
 
       s[0] = '\0';
 
-      if (state_manager_check_rewind(BIT256_GET(current_input, RARCH_REWIND),
-               settings->uints.rewind_granularity, runloop_is_paused, s, sizeof(s), &t))
-         runloop_msg_queue_push(s, 0, t, true, NULL, 
-               MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
+      bool rewinding = state_manager_check_rewind(BIT256_GET(current_input, RARCH_REWIND),
+            settings->uints.rewind_granularity, runloop_paused, s, sizeof(s), &t);
+
+#if defined(HAVE_MENU) && defined(HAVE_MENU_WIDGETS)
+      if (!video_driver_has_widgets())
+#endif
+         if (state_manager_check_rewind(BIT256_GET(current_input, RARCH_REWIND),
+                  settings->uints.rewind_granularity, runloop_is_paused, s, sizeof(s), &t))
+            runloop_msg_queue_push(s, 0, t, true, NULL,
+                        MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
+
+#if defined(HAVE_MENU) && defined(HAVE_MENU_WIDGETS)
+      menu_widgets_set_rewind(rewinding);
+#endif
    }
 
    /* Checks if slowmotion toggle/hold was being pressed and/or held. */