SDL: Fixed software renderer 8-bit scaling and rotation (thanks @jroatch!)

From 7553d5892eb926ea32065e5e4e63d43ca73851ca Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Sat, 8 Nov 2025 08:46:58 -0800
Subject: [PATCH] Fixed software renderer 8-bit scaling and rotation (thanks
 @jroatch!)

Fixes https://github.com/libsdl-org/SDL/issues/14422
---
 src/render/software/SDL_render_sw.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/render/software/SDL_render_sw.c b/src/render/software/SDL_render_sw.c
index 163c8ffc79894..ea848ba68cf5d 100644
--- a/src/render/software/SDL_render_sw.c
+++ b/src/render/software/SDL_render_sw.c
@@ -400,6 +400,9 @@ static bool SW_RenderCopyEx(SDL_Renderer *renderer, SDL_Surface *surface, SDL_Te
         }
         return false;
     }
+    if (src->palette) {
+        SDL_SetSurfacePalette(src_clone, src->palette);
+    }
 
     SDL_GetSurfaceBlendMode(src, &blendmode);
     SDL_GetSurfaceAlphaMod(src, &alphaMod);
@@ -880,7 +883,7 @@ static bool SW_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd, v
 
                 // Prevent to do scaling + clipping on viewport boundaries as it may lose proportion
                 if (dstrect->x < 0 || dstrect->y < 0 || dstrect->x + dstrect->w > surface->w || dstrect->y + dstrect->h > surface->h) {
-                    SDL_Surface *tmp = SDL_CreateSurface(dstrect->w, dstrect->h, src->format);
+                    SDL_Surface *tmp = SDL_CreateSurface(dstrect->w, dstrect->h, surface->format);
                     // Scale to an intermediate surface, then blit
                     if (tmp) {
                         SDL_Rect r;