functional without a fullscreen canvas and some perf