--- khtml/imload/decoders/pngloader.cpp
+++ khtml/imload/decoders/pngloader.cpp
@@ -109,6 +109,8 @@ private:

            if (colorType == PNG_COLOR_TYPE_RGB)
                colorType =  PNG_COLOR_TYPE_RGB_ALPHA; //Paranoia..
+            else if (colorType == PNG_COLOR_TYPE_GRAY)
+                colorType = PNG_COLOR_TYPE_GRAY_ALPHA;
        }

        ImageFormat imFrm;
@@ -192,6 +194,7 @@ private:
    {
        if (interlaced)
        {
+            Q_ASSERT(pngReadStruct->row_info.pixel_depth <= depth * 8);
            requestScanline(rowNum, scanlineBuf);
            png_progressive_combine_row(pngReadStruct, scanlineBuf, data);
            notifyScanline(pass + 1, scanlineBuf);