diff --git a/src/conio/sdl_con.c b/src/conio/sdl_con.c
index 4d3fa0cb4d4531c04796b927e46819a7ca932f23..55503fe2ca93ee120d8d11091bba1ac5b9c91d9b 100644
--- a/src/conio/sdl_con.c
+++ b/src/conio/sdl_con.c
@@ -443,10 +443,10 @@ void sdl_user_func(int func, ...)
 					return;
 				}
 				pal = (struct sdl_palette *)ev.user.data1;
-				pal->index = va_arg(argptr, int) >> 8;
-				pal->r = va_arg(argptr, int) >> 8;
-				pal->g = va_arg(argptr, int) >> 8;
-				pal->b = va_arg(argptr, int) >> 8;
+				pal->index = va_arg(argptr, uint32_t);
+				pal->r = (va_arg(argptr, int) >> 8) & 0xffff;
+				pal->g = (va_arg(argptr, int) >> 8) & 0xffff;
+				pal->b = (va_arg(argptr, int) >> 8) & 0xffff;
 				break;
 			case SDL_USEREVENT_COPY:
 			case SDL_USEREVENT_PASTE: