diff --git a/python_payload/st3m/run.py b/python_payload/st3m/run.py
index b5d2b79098cb2b1e6649e947e1e8c9ef3272b645..fcd663769af431e5aab3a429ece370483cb726a1 100644
--- a/python_payload/st3m/run.py
+++ b/python_payload/st3m/run.py
@@ -144,8 +144,7 @@ def run_main() -> None:
     log.info(f"free memory: {gc.mem_free()}")
 
     captouch.calibration_request()
-    # TODO(q3k): volume control. but until then, make slightly less loud on startup.
-    audio.set_volume_dB(-10)
+    audio.set_volume_dB(-10)  # slightly less loud startup volume
     leds.set_rgb(0, 255, 0, 0)
     leds.update()
     bundles = BundleManager()
diff --git a/python_payload/st3m/ui/elements/overlays.py b/python_payload/st3m/ui/elements/overlays.py
index d1dbdbf443cf2224650d09ed5b8788519f5b2bed..39275300a5bd42038199caee7409c3229515384f 100644
--- a/python_payload/st3m/ui/elements/overlays.py
+++ b/python_payload/st3m/ui/elements/overlays.py
@@ -283,27 +283,20 @@ class OverlayVolume(Overlay):
         opacity = self._showing / 200
         opacity = min(opacity, 0.8)
 
-        ctx.start_group()
-        ctx.global_alpha = opacity
-
         # Background
-        ctx.gray(0)
+        ctx.rgba(0, 0, 0, opacity)
         ctx.round_rectangle(-40, -40, 80, 80, 5)
         ctx.fill()
 
-        ctx.end_group()
-
         # Foreground
         opacity = self._showing / 200
         opacity = min(opacity, 1)
-        ctx.start_group()
-        ctx.global_alpha = opacity
 
         muted = self._muted
         if muted:
-            ctx.gray(0.5)
+            ctx.rgba(0.5, 0.5, 0.5, opacity)
         else:
-            ctx.gray(1)
+            ctx.rgba(1.0, 1.0, 1.0, opacity)
 
         # Icon
         if self._headphones:
@@ -323,7 +316,7 @@ class OverlayVolume(Overlay):
             ctx.line_to(-10, 0)
             ctx.fill()
 
-        ctx.gray(1)
+        ctx.rgba(1.0, 1.0, 1.0, opacity)
 
         # Volume slider
         ctx.round_rectangle(-30, 20, 60, 10, 3)
@@ -337,8 +330,6 @@ class OverlayVolume(Overlay):
         ctx.round_rectangle(-30, 20, width, 10, 3)
         ctx.fill()
 
-        ctx.end_group()
-
 
 class Icon(Responder):
     """