- CopyStrokesAction: use insertAll return value (List<Long>) to get inserted IDs directly instead of fragile takeLast(n) re-fetch - StrokeDao.insertAll now returns List<Long> - Grid bitmap cached separately from stroke bitmap, redrawn only on zoom/pan/resize changes. Eliminates per-frame grid line rendering during active drawing. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>