diff --git a/src/video_output/vout_subpictures.c b/src/video_output/vout_subpictures.c
index 9c3c2adbfb10cec74d27c8df4b34faed358e57a1..49b0bf71c45a89758f2a081e8d24fda9b58bf27d 100644
--- a/src/video_output/vout_subpictures.c
+++ b/src/video_output/vout_subpictures.c
@@ -1361,7 +1361,8 @@ static vlc_render_subpicture *SpuRenderSubpictures(spu_t *spu,
             vlc_vector_push(&output->regions, output_last_ptr);
 
             if (subpic->b_subtitle) {
-                area = spu_area_unscaled(area, scale);
+                if (!external_scale)
+                    area = spu_area_unscaled(area, scale);
                 if (!subpic->b_absolute && area.width > 0 && area.height > 0) {
                     // keep the non-absolute region position that doesn't overlap
                     // with other regions, the output subpicture will become