fallback on CanvasRenderer if necessary