diff --git a/src/ImageSharp.Formats.Png/PngDecoderCore.cs b/src/ImageSharp.Formats.Png/PngDecoderCore.cs index 7ed38b6e8..ffc037b62 100644 --- a/src/ImageSharp.Formats.Png/PngDecoderCore.cs +++ b/src/ImageSharp.Formats.Png/PngDecoderCore.cs @@ -652,9 +652,9 @@ namespace ImageSharp.Formats case PngColorType.Grayscale: int factor = 255 / ((int)Math.Pow(2, this.header.BitDepth) - 1); byte[] newScanline1 = ToArrayByBitsLength(defilteredScanline, this.bytesPerScanline, this.header.BitDepth); - for (int x = pixelOffset; x < this.header.Width; x += increment) + for (int x = pixelOffset, o = 1; x < this.header.Width; x += increment, o++) { - byte intensity = (byte)(newScanline1[x - pixelOffset] * factor); + byte intensity = (byte)(newScanline1[o] * factor); color.PackFromBytes(intensity, intensity, intensity, 255); pixels[x, row] = color; } @@ -682,9 +682,9 @@ namespace ImageSharp.Formats { // If the alpha palette is not null and has one or more entries, this means, that the image contains an alpha // channel and we should try to read it. - for (int x = pixelOffset; x < this.header.Width; x += increment) + for (int x = pixelOffset, o = 1; x < this.header.Width; x += increment, o++) { - int index = newScanline[x - pixelOffset]; + int index = newScanline[o]; int offset = index * 3; byte a = this.paletteAlpha.Length > index ? this.paletteAlpha[index] : (byte)255; @@ -706,9 +706,9 @@ namespace ImageSharp.Formats } else { - for (int x = pixelOffset; x < this.header.Width; x += increment) + for (int x = pixelOffset, o = 1; x < this.header.Width; x += increment, o++) { - int index = newScanline[x - pixelOffset]; + int index = newScanline[o]; int offset = index * 3; byte r = this.palette[offset];