I've managed to reproduce the bug where scrolling the canvas causes the map to jump around and become truncated. I'm reproducing this using a 30×22 map in Chrome. Depending on the laptop that I use to reproduce I have to set the zoom between 40% and 60%. To reproduce zoom just enough for the entire canvas to fit (vertically) within the view but not enough to also fit the top/bottom margins. The engine code contains the following code (variables named by me as the actual JS code was minified): const __editorWrapper = $ ( "#editor-wrapper" ); __editorWrapper . on ( "scroll" , function () { const __scaledOffsetVertical = Math . round (__editorWrapper . scrollTop () / d20 . engine . canvasZoom); // ... if (__scaledOffsetVertical < d20 . engine . padding) { d20 . engine . paddingOffset[ 1 ] = d20 . engine . padding - __scaledOffsetVertical; d20 . engine . currentCanvasOffset[ 1 ] = 0 ; } else { if (d20 . engine . pageHeight / d20 . engine . canvasZoom - __scaledOffsetVertical - d20 . engine . canvasHeight / d20 . engine . canvasZoom + d20 . engine . padding <= 0 ) { d20 . engine . paddingOffset[ 1 ] = d20 . engine . pageHeight / d20 . engine . canvasZoom - __scaledOffsetVertical - d20 . engine . canvasHeight / d20 . engine . canvasZoom + d20 . engine . padding; d20 . engine . currentCanvasOffset[ 1 ] = __scaledOffsetVertical - d20 . engine . padding + d20 . engine . paddingOffset[ 1 ] } else { d20 . engine . paddingOffset[ 1 ] = 0 ; d20 . engine . currentCanvasOffset[ 1 ] = __scaledOffsetVertical - d20 . engine . padding; } } // ... const __pageHeight = d20 . engine . pageHeight; const __editorHeight = $ ( "#editor-wrapper" ) . height () - d20 . engine . paddingOffset[ 1 ] - d20 . engine . scrollbarSize; const __height = Math . min (__pageHeight, __editorHeight); // ... const __offsetTop = d20 . engine . paddingOffset[ 1 ] + "px" ; __canvasContainer[ 0 ] . style . top = __offsetTop; d20 . engine . redrawScreenNextTick (); // ... }); Now the second conditional case (the one that checks whether the equation is <= 0) seems to be the culprit. Not sure what the intent was but with the current formula as you scroll past the top of the canvas, the canvas jumps partially off-screen. Canvas being off-screen causes the bottom of the map to be cut-off. I would debug this further but I don't have access to the original sources and working with the minified ones is a nightmare.