add graceful canvas fallback