add some comments to Canvas::Image and ensure that the canvas redraws after a put_image() call is handled in the GUI thread