Display and crop were using inconsistent coordinate systems.
Display now uses: translate(translateX+offsetX, translateY+offsetY) scale(zoomLevel)
Crop uses: srcX = -(offsetX + translateX) / scale
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>