diff --git a/dom/canvas/test/test_capture_throttled.html b/dom/canvas/test/test_capture_throttled.html
index d0ab328104e8..41cd93a6b964 100644
--- a/dom/canvas/test/test_capture_throttled.html
+++ b/dom/canvas/test/test_capture_throttled.html
@@ -1,36 +1,46 @@
-
-
+
+
Canvas2D test: CaptureStream() with throttled rAF
-
+
+
+
diff --git a/dom/html/HTMLCanvasElement.cpp b/dom/html/HTMLCanvasElement.cpp
index a122695a37fd..93a7bb378736 100644
--- a/dom/html/HTMLCanvasElement.cpp
+++ b/dom/html/HTMLCanvasElement.cpp
@@ -163,7 +163,7 @@ class RequestedFrameRefreshObserver : public nsARefreshObserver {
? now
: mLastCaptureTime + TimeDuration::FromMilliseconds(
nsRefreshDriver::DefaultInterval());
- if (next <= now) {
+ if (mLastCaptureTime.IsNull() || next <= now) {
AUTO_PROFILER_MARKER_TEXT("Canvas CaptureStream", MEDIA_RT, {},
"CaptureFrame direct while throttled"_ns);
CaptureFrame(now);
diff --git a/dom/media/CanvasCaptureMediaStream.cpp b/dom/media/CanvasCaptureMediaStream.cpp
index 948e663ed124..377243540c22 100644
--- a/dom/media/CanvasCaptureMediaStream.cpp
+++ b/dom/media/CanvasCaptureMediaStream.cpp
@@ -88,7 +88,7 @@ class TimerDriver : public OutputStreamDriver {
str.AppendPrintf(
"TimerDriver %staking frame (%sexplicitly requested; after %.2fms; "
"interval cap %.2fms)",
- FrameCaptureRequested(aTime) ? "" : "NOT ",
+ sinceLast >= mFrameInterval ? "" : "NOT ",
mExplicitCaptureRequested ? "" : "NOT ", sinceLast.ToMilliseconds(),
mFrameInterval.ToMilliseconds());
}