diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h
index d86f80b5d..2de439889 100644
--- a/src/video_core/texture_cache/texture_cache.h
+++ b/src/video_core/texture_cache/texture_cache.h
@@ -473,18 +473,21 @@ void TextureCache<P>::BlitImage(const Tegra::Engines::Fermi2D::Surface& dst,
     PrepareImage(dst_id, true, false);
 
     Image& dst_image = slot_images[dst_id];
-    const Image& src_image = slot_images[src_id];
+    Image& src_image = slot_images[src_id];
 
-    const bool is_src_rescaled = True(src_image.flags & ImageFlagBits::Rescaled);
+    bool is_src_rescaled = True(src_image.flags & ImageFlagBits::Rescaled);
     bool is_dst_rescaled = True(dst_image.flags & ImageFlagBits::Rescaled);
 
-    // TODO: This requires the rendertarget image views to be updated with the upscaled sizes,
-    // otherwise the blit will use a larger framebuffer size than the image view attachment.
-    // if (is_src_rescaled && !is_dst_rescaled) {
-    //     if (ImageCanRescale(dst_image)) {
-    //         is_dst_rescaled = dst_image.ScaleUp();
-    //     }
-    // }
+    if (is_src_rescaled != is_dst_rescaled) {
+        if (ImageCanRescale(dst_image)) {
+            ScaleUp(dst_image);
+            is_dst_rescaled = True(dst_image.flags & ImageFlagBits::Rescaled);
+        }
+        if (ImageCanRescale(src_image)) {
+            ScaleUp(src_image);
+            is_src_rescaled = True(src_image.flags & ImageFlagBits::Rescaled);
+        }
+    }
 
     const auto& resolution = Settings::values.resolution_info;
     const auto scale_up = [&](u32 value) -> u32 {