diff --git a/panda/src/x11display/x11GraphicsWindow.cxx b/panda/src/x11display/x11GraphicsWindow.cxx index 9d2de21187..e5c00114f3 100644 --- a/panda/src/x11display/x11GraphicsWindow.cxx +++ b/panda/src/x11display/x11GraphicsWindow.cxx @@ -2044,14 +2044,12 @@ read_ico(istream &ico) { if (infoHeader.compression != 0) goto cleanup; // Load the color palette, if one exists. - colorCount = entries[entry].colorCount == 0 ? 256 : entries[entry].colorCount; - // FIXME: this is probably not a proper fix: - if (bitsPerPixel == 1) { - colorCount = 2; + if (bitsPerPixel != 24 && bitsPerPixel != 32) { + colorCount = 1 << bitsPerPixel; + palette = new IcoColor[colorCount]; + ico.read(reinterpret_cast(palette), colorCount * sizeof(IcoColor)); + if (!ico.good()) goto cleanup; } - palette = new IcoColor[colorCount]; - if (bitsPerPixel <= 8) ico.read(reinterpret_cast(palette), colorCount * sizeof(IcoColor)); - if (!ico.good()) goto cleanup; // Read in the pixel data. xorBmpSize = (infoHeader.width * (infoHeader.height / 2) * bitsPerPixel) / 8;