2d.imageData.put.dirty.outside

putImageData() handles dirty rectangles outside the canvas correctly