@ -103,9 +103,16 @@ PixelArray::PixelArray(Canvas *canvas, int sx, int sy, int width, int height):
// undo premultiplication
dst[bx + 3] = a;
// TODO: abstract
if (a) {
dst[bx + 0] = r * 255 / a;
dst[bx + 1] = g * 255 / a;
dst[bx + 2] = b * 255 / a;
} else {
dst[bx + 0] = r;
dst[bx + 1] = g;
dst[bx + 2] = b;
}
dst += dstStride;