2d.imageData.put.dirty.negative
putImageData() handles negative-sized dirty rectangles correctly