diff --git a/av1/common/blockd.h b/av1/common/blockd.h
index da12066..0ca7c19 100644
--- a/av1/common/blockd.h
+++ b/av1/common/blockd.h
@@ -1158,6 +1158,10 @@
   return tx_size_2d[tx_size];
 }
 
+static INLINE int av1_pixels_to_mi(int pixels) {
+  return ALIGN_POWER_OF_TWO(pixels, 3) >> MI_SIZE_LOG2;
+}
+
 #ifdef __cplusplus
 }  // extern "C"
 #endif
diff --git a/av1/common/resize.h b/av1/common/resize.h
index 43bea58..7bfb73c 100644
--- a/av1/common/resize.h
+++ b/av1/common/resize.h
@@ -102,6 +102,12 @@
   return !(cm->width == cm->superres_upscaled_width);
 }
 
+static INLINE int av1_coded_to_superres_mi(int mi_col, int denom) {
+  const int mi_col_sr =
+      (mi_col * denom + SCALE_NUMERATOR / 2) / SCALE_NUMERATOR;
+  return mi_col_sr;
+}
+
 #define UPSCALE_NORMATIVE_TAPS 8
 extern const int16_t av1_resize_filter_normative[1 << RS_SUBPEL_BITS]
                                                 [UPSCALE_NORMATIVE_TAPS];
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index 51a999c..3c7e465 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -3480,6 +3480,7 @@
 #if !CONFIG_REALTIME_ONLY
 static int get_rdmult_delta(AV1_COMP *cpi, BLOCK_SIZE bsize, int analysis_type,
                             int mi_row, int mi_col, int orig_rdmult) {
+  AV1_COMMON *const cm = &cpi->common;
   assert(IMPLIES(cpi->gf_group.size > 0,
                  cpi->gf_group.index < cpi->gf_group.size));
   const int tpl_idx = cpi->gf_group.frame_disp_idx[cpi->gf_group.index];
@@ -3500,12 +3501,15 @@
 
   int64_t mc_count = 0, mc_saved = 0;
   int mi_count = 0;
+  const int mi_col_sr =
+      av1_coded_to_superres_mi(mi_col, cm->superres_scale_denominator);
+  const int mi_col_end_sr = av1_coded_to_superres_mi(
+      mi_col + mi_wide, cm->superres_scale_denominator);
+  const int mi_cols_sr = av1_pixels_to_mi(cm->superres_upscaled_width);
   for (row = mi_row; row < mi_row + mi_high; ++row) {
-    for (col = mi_col; col < mi_col + mi_wide; ++col) {
+    for (col = mi_col_sr; col < mi_col_end_sr; ++col) {
+      if (row >= cm->mi_rows || col >= mi_cols_sr) continue;
       TplDepStats *this_stats = &tpl_stats[row * tpl_stride + col];
-
-      if (row >= cpi->common.mi_rows || col >= cpi->common.mi_cols) continue;
-
       intra_cost += this_stats->intra_cost;
       mc_dep_cost += this_stats->intra_cost + this_stats->mc_flow;
       mc_count += this_stats->mc_count;
@@ -3579,10 +3583,15 @@
 
   int64_t mc_count = 0, mc_saved = 0;
   int mi_count = 0;
+  const int mi_col_sr =
+      av1_coded_to_superres_mi(mi_col, cm->superres_scale_denominator);
+  const int mi_col_end_sr = av1_coded_to_superres_mi(
+      mi_col + mi_wide, cm->superres_scale_denominator);
+  const int mi_cols_sr = av1_pixels_to_mi(cm->superres_upscaled_width);
   for (row = mi_row; row < mi_row + mi_high; ++row) {
-    for (col = mi_col; col < mi_col + mi_wide; ++col) {
+    for (col = mi_col_sr; col < mi_col_end_sr; ++col) {
+      if (row >= cm->mi_rows || col >= mi_cols_sr) continue;
       TplDepStats *this_stats = &tpl_stats[row * tpl_stride + col];
-      if (row >= cm->mi_rows || col >= cm->mi_cols) continue;
       intra_cost += this_stats->intra_cost;
       mc_dep_cost += this_stats->intra_cost + this_stats->mc_flow;
       mc_count += this_stats->mc_count;
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index 20367c0..d2a69fc 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -3639,8 +3639,9 @@
     int64_t mc_count_base = 0;
     int row, col;
 
+    const int mi_cols_sr = av1_pixels_to_mi(cm->superres_upscaled_width);
     for (row = 0; row < cm->mi_rows; ++row) {
-      for (col = 0; col < cm->mi_cols; ++col) {
+      for (col = 0; col < mi_cols_sr; ++col) {
         TplDepStats *this_stats = &tpl_stats[row * tpl_stride + col];
         intra_cost_base += this_stats->intra_cost;
         mc_dep_cost_base += this_stats->intra_cost + this_stats->mc_flow;
