diff --git a/bower.json b/bower.json
index 85df31dda..c3cf2043b 100644
--- a/bower.json
+++ b/bower.json
@@ -1,6 +1,6 @@
 {
   "name": "pdfjs-dist",
-  "version": "1.5.218",
+  "version": "1.5.220",
   "main": [
     "build/pdf.js",
     "build/pdf.worker.js"
diff --git a/build/pdf.combined.js b/build/pdf.combined.js
index 4a0f659f5..013c6e7d0 100644
--- a/build/pdf.combined.js
+++ b/build/pdf.combined.js
@@ -28,8 +28,8 @@ factory((root.pdfjsDistBuildPdfCombined = {}));
   // Use strict in our context only - users might not want it
   'use strict';
 
-var pdfjsVersion = '1.5.218';
-var pdfjsBuild = '4968ac7';
+var pdfjsVersion = '1.5.220';
+var pdfjsBuild = 'baa1493';
 
   var pdfjsFilePath =
     typeof document !== 'undefined' && document.currentScript ?
diff --git a/build/pdf.js b/build/pdf.js
index b59dbabfd..c12a65406 100644
--- a/build/pdf.js
+++ b/build/pdf.js
@@ -28,8 +28,8 @@ factory((root.pdfjsDistBuildPdf = {}));
   // Use strict in our context only - users might not want it
   'use strict';
 
-var pdfjsVersion = '1.5.218';
-var pdfjsBuild = '4968ac7';
+var pdfjsVersion = '1.5.220';
+var pdfjsBuild = 'baa1493';
 
   var pdfjsFilePath =
     typeof document !== 'undefined' && document.currentScript ?
diff --git a/build/pdf.worker.js b/build/pdf.worker.js
index 72c14222f..984b7c0e2 100644
--- a/build/pdf.worker.js
+++ b/build/pdf.worker.js
@@ -28,8 +28,8 @@ factory((root.pdfjsDistBuildPdfWorker = {}));
   // Use strict in our context only - users might not want it
   'use strict';
 
-var pdfjsVersion = '1.5.218';
-var pdfjsBuild = '4968ac7';
+var pdfjsVersion = '1.5.220';
+var pdfjsBuild = 'baa1493';
 
   var pdfjsFilePath =
     typeof document !== 'undefined' && document.currentScript ?
diff --git a/package.json b/package.json
index d7d5057ff..949ab3ec6 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "pdfjs-dist",
-  "version": "1.5.218",
+  "version": "1.5.220",
   "main": "build/pdf.js",
   "description": "Generic build of Mozilla's PDF.js library.",
   "keywords": [
diff --git a/web/pdf_viewer.js b/web/pdf_viewer.js
index 5c8ec6087..667f4f776 100644
--- a/web/pdf_viewer.js
+++ b/web/pdf_viewer.js
@@ -3249,23 +3249,28 @@ var PDFViewer = (function pdfViewer() {
         return;
       }
 
+      var arg;
       if (!(0 < val && val <= this.pagesCount)) {
-        this.eventBus.dispatch('pagechange', {
+        arg = {
           source: this,
           updateInProgress: this.updateInProgress,
           pageNumber: this._currentPageNumber,
           previousPageNumber: val
-        });
+        };
+        this.eventBus.dispatch('pagechanging', arg);
+        this.eventBus.dispatch('pagechange', arg);
         return;
       }
 
-      this.eventBus.dispatch('pagechange', {
+      arg = {
         source: this,
         updateInProgress: this.updateInProgress,
         pageNumber: val,
         previousPageNumber: this._currentPageNumber
-      });
+      };
+      this.eventBus.dispatch('pagechanging', arg);
       this._currentPageNumber = val;
+      this.eventBus.dispatch('pagechange', arg);
 
       // Check if the caller is `PDFViewer_update`, to avoid breaking scrolling.
       if (this.updateInProgress) {
@@ -3486,11 +3491,13 @@ var PDFViewer = (function pdfViewer() {
 
     _setScaleDispatchEvent: function pdfViewer_setScaleDispatchEvent(
         newScale, newValue, preset) {
-      this.eventBus.dispatch('scalechange', {
+      var arg = {
         source: this,
         scale: newScale,
         presetValue: preset ? newValue : undefined
-      });
+      };
+      this.eventBus.dispatch('scalechanging', arg);
+      this.eventBus.dispatch('scalechange', arg);
     },
 
     _setScaleUpdatePages: function pdfViewer_setScaleUpdatePages(