From 501ee05129581d51226853f4b70d81cf6e8be22d Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Thu, 2 Apr 2026 11:00:17 -0700
Subject: [PATCH] Don't strip the alpha channel when scaling surfaces if it
will be needed
Fixes https://github.com/libsdl-org/SDL/issues/15297
---
src/video/SDL_surface.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/video/SDL_surface.c b/src/video/SDL_surface.c
index 6658ae8df5294..d96dc7fb4e8ce 100644
--- a/src/video/SDL_surface.c
+++ b/src/video/SDL_surface.c
@@ -1314,7 +1314,8 @@ bool SDL_BlitSurfaceUncheckedScaled(SDL_Surface *src, const SDL_Rect *srcrect, S
// Change source format if not appropriate for scaling
if (SDL_BYTESPERPIXEL(src->format) != 4 || src->format == SDL_PIXELFORMAT_ARGB2101010) {
SDL_PixelFormat fmt;
- if (SDL_BYTESPERPIXEL(dst->format) == 4 && dst->format != SDL_PIXELFORMAT_ARGB2101010) {
+ if (SDL_BYTESPERPIXEL(dst->format) == 4 && dst->format != SDL_PIXELFORMAT_ARGB2101010 &&
+ (SDL_ISPIXELFORMAT_ALPHA(dst->format) || !is_complex_copy_flags)) {
fmt = dst->format;
} else {
fmt = SDL_PIXELFORMAT_ARGB8888;