From 4b17773a1a0bbd57fc65a00dd20624452a01e8bd Mon Sep 17 00:00:00 2001
From: faiface <faiface@ksp.sk>
Date: Mon, 20 Mar 2017 23:11:50 +0100
Subject: [PATCH] fix bug in Canvas.MakeTriangles

---
 pixelgl/canvas.go | 23 ++++++++++++++---------
 1 file changed, 14 insertions(+), 9 deletions(-)

diff --git a/pixelgl/canvas.go b/pixelgl/canvas.go
index 7be4950..4b37078 100644
--- a/pixelgl/canvas.go
+++ b/pixelgl/canvas.go
@@ -105,11 +105,15 @@ func (c *Canvas) MakePicture(p pixel.Picture) pixel.TargetPicture {
 
 	if pd, ok := p.(*pixel.PictureData); ok {
 		// PictureData short path
-		for i, nrgba := range pd.Pix {
-			pixels[i*4+0] = nrgba.R
-			pixels[i*4+1] = nrgba.G
-			pixels[i*4+2] = nrgba.B
-			pixels[i*4+3] = nrgba.A
+		for y := 0; y < bh; y++ {
+			for x := 0; x < bw; x++ {
+				nrgba := pd.Pix[y*pd.Stride+x]
+				off := (y*bw + x) * 4
+				pixels[off+0] = nrgba.R
+				pixels[off+1] = nrgba.G
+				pixels[off+2] = nrgba.B
+				pixels[off+3] = nrgba.A
+			}
 		}
 	} else if p, ok := p.(pixel.PictureColor); ok {
 		for y := 0; y < bh; y++ {
@@ -119,10 +123,11 @@ func (c *Canvas) MakePicture(p pixel.Picture) pixel.TargetPicture {
 					math.Max(float64(by+y), bounds.Min.Y()),
 				)
 				color := p.Color(at)
-				pixels[(y*bw+x)*4+0] = uint8(color.R * 255)
-				pixels[(y*bw+x)*4+1] = uint8(color.G * 255)
-				pixels[(y*bw+x)*4+2] = uint8(color.B * 255)
-				pixels[(y*bw+x)*4+3] = uint8(color.A * 255)
+				off := (y*bw + x) * 4
+				pixels[off+0] = uint8(color.R * 255)
+				pixels[off+1] = uint8(color.G * 255)
+				pixels[off+2] = uint8(color.B * 255)
+				pixels[off+3] = uint8(color.A * 255)
 			}
 		}
 	}
-- 
GitLab