diff --git a/l10n/en-US/viewer.properties b/l10n/en-US/viewer.properties
index 35391eabd..dfd76700f 100644
--- a/l10n/en-US/viewer.properties
+++ b/l10n/en-US/viewer.properties
@@ -49,6 +49,8 @@ thumb_page_title=Page {{page}}
 thumb_page_canvas=Thumbnail of Page {{page}}
 
 # Context menu
+first_page.label=First Page
+last_page.label=Last Page
 page_rotate_cw.label=Rotate Clockwise
 page_rotate_ccw.label=Rotate Counter-Clockwise
 
diff --git a/l10n/nl/viewer.properties b/l10n/nl/viewer.properties
index 45bbec253..a33aad92f 100644
--- a/l10n/nl/viewer.properties
+++ b/l10n/nl/viewer.properties
@@ -48,6 +48,10 @@ thumb_page_title=Pagina {{page}}
 # number.
 thumb_page_canvas=Miniatuur van pagina {{page}}
 
+# Context menu
+first_page.label=Eerste pagina
+last_page.label=Laatste pagina
+
 # Find panel button title and messages
 find=Zoek
 find_terms_not_found=(Niet gevonden)
diff --git a/web/viewer.html b/web/viewer.html
index 3cdb84378..980b7c36d 100644
--- a/web/viewer.html
+++ b/web/viewer.html
@@ -191,6 +191,10 @@ limitations under the License.
         </div>
 
         <menu type="context" id="viewerContextMenu">
+          <menuitem label="First Page" id="first_page"
+                    data-l10n-id="first_page" ></menuitem>
+          <menuitem label="Last Page" id="last_page"
+                    data-l10n-id="last_page" ></menuitem>
           <menuitem label="Rotate Counter-Clockwise" id="page_rotate_ccw"
                     data-l10n-id="page_rotate_ccw" ></menuitem>
           <menuitem label="Rotate Clockwise" id="page_rotate_cw"
diff --git a/web/viewer.js b/web/viewer.js
index c651d63a5..8fd7b4e8a 100644
--- a/web/viewer.js
+++ b/web/viewer.js
@@ -1091,6 +1091,7 @@ var PDFView = {
     document.getElementById('numPages').textContent =
       mozL10n.get('page_of', {pageCount: pagesCount}, 'of {{pageCount}}');
     document.getElementById('pageNumber').max = pagesCount;
+
     PDFView.documentFingerprint = id;
     var store = PDFView.store = new Settings(id);
     var storePromise = store.initializedPromise;
@@ -2611,15 +2612,25 @@ document.addEventListener('DOMContentLoaded', function webViewerLoad(evt) {
       PDFView.parseScale(this.value);
     });
 
+  document.getElementById('first_page').addEventListener('click',
+    function() {
+      PDFView.page = 1;
+    });
+
+  document.getElementById('last_page').addEventListener('click',
+    function() {
+      PDFView.page = PDFView.pdfDocument.numPages;
+    });
+
   document.getElementById('page_rotate_ccw').addEventListener('click',
-      function() {
-        PDFView.rotatePages(-90);
-      });
+    function() {
+      PDFView.rotatePages(-90);
+    });
 
   document.getElementById('page_rotate_cw').addEventListener('click',
-      function() {
-        PDFView.rotatePages(90);
-      });
+    function() {
+      PDFView.rotatePages(90);
+    });
 
 //#if (FIREFOX || MOZCENTRAL)
 //if (FirefoxCom.requestSync('getLoadingType') == 'passive') {