Keep one dot-grid shader per grid, and the points path untouched

A shader was made for every painter and never disposed, and its uniforms
are only freed by dispose: zooming replaced the painter each step, so each
step leaked one. The grid's state now owns a single shader and disposes it
when the grid goes. Only the web reads the editor's zoom, so desktop
records its points once again rather than on every zoom step.

Found in review by Astra.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
f7ad2eaa4dDara Adedeji committed on 10/6/2026, 2:00:55 AMparent99b947f

Checks

Some checks failed
1 file changedLine totals unavailable