test = function(setter) { document.body.appendChild(document.createElement("p")).appendChild(document.createTextNode("There should be no red pixels below.")); var canvas = document.body.appendChild(document.createElement("canvas")); canvas.width = "400"; canvas.height = "400"; canvas.style.backgroundColor = "white"; var ctx = canvas.getContext('2d'); var w = 10; var h = 10; var y = 10; for (var offsetY = -10; offsetY <= 10; offsetY++) { var x = 10; for (var offsetX = -10; offsetX <= 10; offsetX++) { ctx.shadowOffsetX = 0; ctx.shadowOffsetY = 0 ctx.shadowBlur = 0; ctx.shadowColor = "transparent"; ctx.fillStyle = 'red'; ctx.fillRect(x + offsetX, y + offsetY, w, h); setter(ctx, offsetX, offsetY); ctx.fillStyle = 'white'; ctx.fillRect(x, y, w, h); x += w + Math.abs(offsetX) + 2; } y += h + Math.abs(offsetY) + 2; } }