// This. This seems to be the solution. 0.72ns/op. RGBA -> RGBA is 0.02ns/op. Draw is 180ns/op. // from https://github.com/BurntSushi/xgbutil/blob/master/xgraphics/convert.go func convertRGBAtoXgb(dest *xgraphics.Image, src *image.RGBA) { var x, y, i, si int for x = dest.Rect.Min.X; x < dest.Rect.Max.X; x++ { for y = dest.Rect.Min.Y; y < dest.Rect.Max.Y; y++ { si = src.PixOffset(x, y) i = dest.PixOffset(x, y) dest.Pix[i+0] = src.Pix[si+2] dest.Pix[i+1] = src.Pix[si+1] dest.Pix[i+2] = src.Pix[si+0] dest.Pix[i+3] = src.Pix[si+3] } } }