From: Bartosz Kosiorek gang65@poczta.onet.pl
The issue occurs when dst_color was pushed outside the loop ARGB *dst_color = (ARGB*)(dst_dyn_data); --- dlls/gdiplus/graphics.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c index 9d033af7609..5ee734dfe8f 100644 --- a/dlls/gdiplus/graphics.c +++ b/dlls/gdiplus/graphics.c @@ -3276,7 +3276,7 @@ GpStatus WINGDIPAPI GdipDrawImagePointsRect(GpGraphics *graphics, GpImage *image y++, src_pointf_row.X += y_dx, src_pointf_row.Y += y_dy) { for (x = dst_area.left, src_pointf = src_pointf_row; x < dst_area.right; - x++, src_pointf.X += x_dx, src_pointf.Y += x_dy, dst_color += sizeof(ARGB)) + x++, src_pointf.X += x_dx, src_pointf.Y += x_dy) { if (src_pointf.X >= srcx && src_pointf.X < srcx + srcwidth && src_pointf.Y >= srcy && src_pointf.Y < srcy + srcheight) @@ -3284,6 +3284,7 @@ GpStatus WINGDIPAPI GdipDrawImagePointsRect(GpGraphics *graphics, GpImage *image imageAttributes, interpolation, offset_mode); else *dst_color = 0; + dst_color++; } } }