diff --git a/src/add-ons/translators/pngtranslator/PNGTranslator.cpp b/src/add-ons/translators/pngtranslator/PNGTranslator.cpp index 32834db993..db380dbf89 100644 --- a/src/add-ons/translators/pngtranslator/PNGTranslator.cpp +++ b/src/add-ons/translators/pngtranslator/PNGTranslator.cpp @@ -325,6 +325,14 @@ PNGTranslator::translate_from_png_to_bits(BPositionIO *inSource, int bit_depth, color_type, interlace_type; png_get_IHDR(ppng, pinfo, &width, &height, &bit_depth, &color_type, &interlace_type, int_p_NULL, int_p_NULL); + + if ((color_type == PNG_COLOR_TYPE_GRAY || + color_type == PNG_COLOR_TYPE_GRAY_ALPHA) && bit_depth < 8) { + // libpng's gray to RGB conversion is not implemented + // for bit depths less than 8 + result = B_NO_TRANSLATOR; + break; + } // Setup image transformations to make converting it easier bool balpha = false;