diff --git a/video/receive_statistics_proxy.cc b/video/receive_statistics_proxy.cc
index 84b00b7..bce7093 100644
--- a/video/receive_statistics_proxy.cc
+++ b/video/receive_statistics_proxy.cc
@@ -95,8 +95,8 @@
       // 1000ms window, scale 1000 for ms to s.
       decode_fps_estimator_(1000, 1000),
       renders_fps_estimator_(1000, 1000),
-      render_fps_tracker_(100, 10u),
-      render_pixel_tracker_(100, 10u),
+      first_frame_rendered_(Timestamp::MinusInfinity()),
+      total_render_sqrt_pixels_(0),
       video_quality_observer_(new VideoQualityObserver()),
       interframe_delay_max_moving_(kMovingMaxWindowMs),
       freq_offset_counter_(clock, nullptr, kFreqOffsetProcessIntervalMs),
@@ -124,7 +124,8 @@
   char log_stream_buf[8 * 1024];
   SimpleStringBuilder log_stream(log_stream_buf);
 
-  TimeDelta stream_duration = clock_->CurrentTime() - start_;
+  Timestamp now = clock_->CurrentTime();
+  TimeDelta stream_duration = now - start_;
 
   if (stats_.frame_counts.key_frames > 0 ||
       stats_.frame_counts.delta_frames > 0) {
@@ -178,15 +179,16 @@
   }
 
   const int kMinRequiredSamples = 200;
-  int samples = static_cast<int>(render_fps_tracker_.TotalSampleCount());
-  if (samples >= kMinRequiredSamples) {
-    int rendered_fps = round(render_fps_tracker_.ComputeTotalRate());
+  TimeDelta render_duration = now - first_frame_rendered_;
+  if (stats_.frames_rendered >= kMinRequiredSamples &&
+      render_duration > TimeDelta::Zero()) {
+    int rendered_fps = (stats_.frames_rendered / render_duration).hertz();
     RTC_HISTOGRAM_COUNTS_100("WebRTC.Video.RenderFramesPerSecond",
                              rendered_fps);
     log_stream << "WebRTC.Video.RenderFramesPerSecond " << rendered_fps << '\n';
     RTC_HISTOGRAM_COUNTS_100000(
         "WebRTC.Video.RenderSqrtPixelsPerSecond",
-        round(render_pixel_tracker_.ComputeTotalRate()));
+        (total_render_sqrt_pixels_ / render_duration).hertz());
   }
 
   std::optional<int> sync_offset_ms =
@@ -734,12 +736,13 @@
       &content_specific_stats_[last_content_type_];
   renders_fps_estimator_.Update(1, frame_meta.decode_timestamp.ms());
 
+  if (stats_.frames_rendered == 0) {
+    first_frame_rendered_ = clock_->CurrentTime();
+  }
   ++stats_.frames_rendered;
   stats_.width = frame_meta.width;
   stats_.height = frame_meta.height;
-
-  render_fps_tracker_.AddSamples(1);
-  render_pixel_tracker_.AddSamples(sqrt(frame_meta.width * frame_meta.height));
+  total_render_sqrt_pixels_ += sqrt(frame_meta.width * frame_meta.height);
   content_specific_stats->received_width.Add(frame_meta.width);
   content_specific_stats->received_height.Add(frame_meta.height);
 
diff --git a/video/receive_statistics_proxy.h b/video/receive_statistics_proxy.h
index e3cd922..b72ed92 100644
--- a/video/receive_statistics_proxy.h
+++ b/video/receive_statistics_proxy.h
@@ -39,7 +39,6 @@
 #include "rtc_base/numerics/running_statistics.h"
 #include "rtc_base/numerics/sample_counter.h"
 #include "rtc_base/rate_statistics.h"
-#include "rtc_base/rate_tracker.h"
 #include "rtc_base/system/no_unique_address.h"
 #include "rtc_base/thread_annotations.h"
 #include "video/stats_counter.h"
@@ -177,8 +176,8 @@
   const uint32_t remote_ssrc_;
   RateStatistics decode_fps_estimator_ RTC_GUARDED_BY(main_thread_);
   RateStatistics renders_fps_estimator_ RTC_GUARDED_BY(main_thread_);
-  RateTracker render_fps_tracker_ RTC_GUARDED_BY(main_thread_);
-  RateTracker render_pixel_tracker_ RTC_GUARDED_BY(main_thread_);
+  Timestamp first_frame_rendered_ RTC_GUARDED_BY(main_thread_);
+  int64_t total_render_sqrt_pixels_ RTC_GUARDED_BY(main_thread_);
   SampleCounter sync_offset_counter_ RTC_GUARDED_BY(main_thread_);
   SampleCounter decode_time_counter_ RTC_GUARDED_BY(main_thread_);
   SampleCounter jitter_delay_counter_ RTC_GUARDED_BY(main_thread_);
diff --git a/video/receive_statistics_proxy_unittest.cc b/video/receive_statistics_proxy_unittest.cc
index b90d476..a1cef74 100644
--- a/video/receive_statistics_proxy_unittest.cc
+++ b/video/receive_statistics_proxy_unittest.cc
@@ -1113,6 +1113,7 @@
 TEST_F(ReceiveStatisticsProxyTest, ReceivedFrameHistogramsAreUpdated) {
   for (int i = 0; i < kMinRequiredSamples; ++i) {
     statistics_proxy_->OnRenderedFrame(MetaData(CreateFrame(kWidth, kHeight)));
+    time_controller_.AdvanceTime(TimeDelta::Millis(33));
   }
 
   statistics_proxy_->UpdateHistograms(std::nullopt, StreamDataCounters(),
