ImageSource should be refactored that it also holds the "background" image
One Image in ImageSource directly caches the Image Contents in an Array, so that the renderer can directly access image data from it and doesn't resort to getImageData() multiple times when drawing a brush. The painted image is only once transferred to the screen via the painter
Just to keep track