Supports transparent image.

The engine assumed the source image must be opaque,
so it redraws the background instead of clearing the canvas,
this doesn't work for image with transparent parts.