diff --git a/src/display/display_utils.js b/src/display/display_utils.js index 4e23ec876e31e..d09e778f5edc6 100644 --- a/src/display/display_utils.js +++ b/src/display/display_utils.js @@ -250,8 +250,11 @@ class PageViewport { const centerX = (viewBox[2] + viewBox[0]) / 2; const centerY = (viewBox[3] + viewBox[1]) / 2; let rotateA, rotateB, rotateC, rotateD; - rotation = rotation % 360; - rotation = rotation < 0 ? rotation + 360 : rotation; + // Normalize the rotation, by clamping it to the [0, 360) range. + rotation %= 360; + if (rotation < 0) { + rotation += 360; + } switch (rotation) { case 180: rotateA = -1; diff --git a/web/app.js b/web/app.js index e2f317fdb2376..125a56644bf4c 100644 --- a/web/app.js +++ b/web/app.js @@ -1856,11 +1856,7 @@ const PDFViewerApplication = { }, rotatePages(delta) { - if (!this.pdfDocument) { - return; - } - const newRotation = (this.pdfViewer.pagesRotation + 360 + delta) % 360; - this.pdfViewer.pagesRotation = newRotation; + this.pdfViewer.pagesRotation += delta; // Note that the thumbnail viewer is updated, and rendering is triggered, // in the 'rotationchanging' event handler. }, diff --git a/web/base_viewer.js b/web/base_viewer.js index 9d77e8bbb9b02..b8ec64c54e50c 100644 --- a/web/base_viewer.js +++ b/web/base_viewer.js @@ -388,6 +388,11 @@ class BaseViewer { if (!this.pdfDocument) { return; } + // Normalize the rotation, by clamping it to the [0, 360) range. + rotation %= 360; + if (rotation < 0) { + rotation += 360; + } if (this._pagesRotation === rotation) { return; // The rotation didn't change. }