sdl2-compat: SDL_LoadBMP_RW: When converting up to 8bpp, keep the original palette.

From 4e11295591d09543454c7979c9d84bf439a98913 Mon Sep 17 00:00:00 2001
From: "Ryan C. Gordon" <[EMAIL REDACTED]>
Date: Wed, 1 Apr 2026 18:31:39 -0400
Subject: [PATCH] SDL_LoadBMP_RW: When converting up to 8bpp, keep the original
 palette.

Otherwise, SDL will dither out a reasonable 256-color palette and match colors
to it.

Fixes #586.
---
 src/sdl2_compat.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/sdl2_compat.c b/src/sdl2_compat.c
index c351f0e6..9ba967e7 100644
--- a/src/sdl2_compat.c
+++ b/src/sdl2_compat.c
@@ -4070,7 +4070,7 @@ SDL_LoadBMP_RW(SDL2_RWops *rwops2, int freesrc)
     }
 
     if (SDL_BITSPERPIXEL(retval->format) < 8) {  /* SDL3 can provide BMPs that are < 8bpp. In SDL2, these would get converted to 8bpp. */
-        SDL_Surface *cvt = SDL3_ConvertSurface(retval, SDL_PIXELFORMAT_INDEX8);
+        SDL_Surface *cvt = SDL3_ConvertSurfaceAndColorspace(retval, SDL_PIXELFORMAT_INDEX8, SDL3_GetSurfacePalette(retval), SDL3_GetSurfaceColorspace(retval), 0);
         SDL3_DestroySurface(retval);
         retval = cvt;  /* if conversion failed, Surface3to2(), below, will notice. */
     }