This looks fine to me. If the general meaning of clear() is 'get rid of and don't draw again until I tell you otherwise", the Canvas renderer is currently breaking that; fixing that makes sense. Code looks solid, and doesn't appear to break anything.