From 4d847f42235e06098cc80e40085ec47af75a21b0 Mon Sep 17 00:00:00 2001
From: Jaime Passos <lazymyuutsu@gmail.com>
Date: Sat, 10 Oct 2020 14:09:59 -0300
Subject: [PATCH] Compare the PNG's palette with the game's palette instead of
 assuming they are the same

---
 src/r_picformats.c | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/src/r_picformats.c b/src/r_picformats.c
index 95fe23aeb1..feec2abf4d 100644
--- a/src/r_picformats.c
+++ b/src/r_picformats.c
@@ -887,8 +887,24 @@ static png_bytep *PNG_Read(
 		// matches the color count of SRB2's palette: 256 colors.
 		if (png_get_PLTE(png_ptr, png_info_ptr, &palette, &palette_size))
 		{
-			if (palette_size == 256)
+			if (palette_size == 256 && pMasterPalette)
+			{
+				png_colorp pal = palette;
+				INT32 i;
+
 				usepal = true;
+
+				for (i = 0; i < 256; i++)
+				{
+					UINT32 rgb = R_PutRgbaRGBA(pal->red, pal->green, pal->blue, 0xFF);
+					if (rgb != pMasterPalette[i].rgba)
+					{
+						usepal = false;
+						break;
+					}
+					pal++;
+				}
+			}
 		}
 
 		// If any of the tRNS colors have an alpha lower than 0xFF, and that
-- 
GitLab