diff --git a/components/st3m/st3m_gfx.c b/components/st3m/st3m_gfx.c
index 2d9a5d185a69fe2d042a204d270da08d67c407a2..5c98b273199f9d55b731971157ab2e3aa008b6d6 100644
--- a/components/st3m/st3m_gfx.c
+++ b/components/st3m/st3m_gfx.c
@@ -341,7 +341,9 @@ st3m_gfx_mode st3m_gfx_set_mode(st3m_gfx_mode mode) {
     return mode;
 }
 
-st3m_gfx_mode st3m_gfx_get_mode(void) { return _st3m_gfx_mode; }
+st3m_gfx_mode st3m_gfx_get_mode(void) {
+    return _st3m_gfx_mode ? _st3m_gfx_mode : default_mode;
+}
 
 uint8_t *st3m_gfx_fb(st3m_gfx_mode mode, int *width, int *height, int *stride) {
     st3m_gfx_mode set_mode = _st3m_gfx_mode ? _st3m_gfx_mode : default_mode;
diff --git a/python_payload/st3m/ui/elements/overlays.py b/python_payload/st3m/ui/elements/overlays.py
index 45f69690d73959694f8b3eef06fc456bc8f94252..82d8e8b4936f6f94a1c1f8464d689b0fe71f32ed 100644
--- a/python_payload/st3m/ui/elements/overlays.py
+++ b/python_payload/st3m/ui/elements/overlays.py
@@ -80,18 +80,20 @@ class Compositor(Responder):
 
     def think(self, ins: InputState, delta_ms: int) -> None:
         self.main.think(ins, delta_ms)
-        if sys_display.get_mode() != 0:
+        if (
+            sys_display.get_mode() & sys_display.osd == 0
+            or settings.onoff_show_fps.value
+        ):
             return
-        if not settings.onoff_show_fps.value and not sys_display.get_mode() != 0:
-            for overlay in self._enabled_overlays():
-                overlay.think(ins, delta_ms)
+        for overlay in self._enabled_overlays():
+            overlay.think(ins, delta_ms)
 
     def draw(self, ctx: Context) -> None:
         global _clip_x0, _clip_y0, _clip_x1, _clip_y1
         self.main.draw(ctx)
-        if sys_display.get_mode() != 0:
+        if (sys_display.get_mode() & sys_display.osd) == 0:
             return
-        octx = sys_display.ctx(256)  # XXX add symbolic name for overlay
+        octx = sys_display.ctx(sys_display.osd)
         if settings.onoff_show_fps.value:
             _clip_x0 = 0
             _clip_y1 = 0