createValidImage uses a canvas correctly instead of trying to convert an image
to a data URL.
Self instead of this update.
More event driven.
Changed to naturalWidth/Height