diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 85d9a7ef8a..bf99651c13 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -6527,15 +6527,20 @@ static bool ChangeGRFPalette(size_t len, ByteReader *buf) buf->Skip(len); } else { char data = buf->ReadByte(); + GRFPalette pal = GRFP_GRF_UNSET; switch (data) { case '*': - case 'A': _cur_grfconfig->palette |= GRFP_GRF_ANY; break; - case 'W': _cur_grfconfig->palette |= GRFP_GRF_WINDOWS; break; - case 'D': _cur_grfconfig->palette |= GRFP_GRF_DOS; break; + case 'A': pal = GRFP_GRF_ANY; break; + case 'W': pal = GRFP_GRF_WINDOWS; break; + case 'D': pal = GRFP_GRF_DOS; break; default: grfmsg(2, "StaticGRFInfo: unexpected value '%02x' for 'INFO'->'PALS', ignoring this field", data); break; } + if (pal != GRFP_GRF_UNSET) { + _cur_grfconfig->palette &= ~GRFP_GRF_MASK; + _cur_grfconfig->palette |= pal; + } } return true; }