diff --git a/app/components/commander/context_menu/index.hbs b/app/components/commander/context_menu/index.hbs
index 04808b2a34aad219a45e38a33ed3e1500d0fc383..c98e0157999e793e8fd0c98eb43723b8d75edad1 100644
--- a/app/components/commander/context_menu/index.hbs
+++ b/app/components/commander/context_menu/index.hbs
@@ -1,39 +1,45 @@
 <ul class="dropdown-menu context-menu">
   <li>
-    <a class="dropdown-item" {{on "click" @openNewFolderModal }}>
+    <a class="dropdown-item"
+      role='button'
+      {{on "click" @openNewFolderModal }}>
       <i class="fa fa-plus mx-2"></i>New Folder
     </a>
   </li>
   <li class="dropdown dropdown-submenu dropend">
     <div class="dropdown">
-      <a class="dropdown-item dropdown-toggle" data-toggle="dropdown">
+      <a class="dropdown-item dropdown-toggle" role='button' data-toggle="dropdown">
         <i class="fa fa-expand mx-2"></i>
         Selection
       </a>
       <ul class="dropdown-menu dropdown-menu-left">
-        <li class="dropdown-item"
+        <li class="dropdown-item" role='button'
           {{on "click" this.onSelectAll}}>All</li>
-        <li class="dropdown-item"
+        <li class="dropdown-item" role='button'
           {{on "click" this.onSelectFolders}}>Folders</li>
-        <li class="dropdown-item"
+        <li class="dropdown-item" role='button'
           {{on "click" this.onSelectDocuments}}>Documents</li>
-        <li class="dropdown-item"
+        <li class="dropdown-item" role='button'
           {{on "click" this.onSelectNone}}>None</li>
-        <li class="dropdown-item"
+        <li class="dropdown-item" role='button'
         {{on "click" this.onInvertSelection}}>Invert Selection</li>
       </ul>
     </div>
   </li>
   {{#if this.one_node_selected}}
     <li>
-      <a class="dropdown-item" {{on "click" this.onRename }}>
+      <a class="dropdown-item"
+        role='button'
+        {{on "click" this.onRename }}>
         <i class="fa fa-edit mx-2"></i>Rename
       </a>
     </li>
   {{/if}}
   {{#if this.one_or_multiple_nodes_selected}}
     <li>
-      <a class="dropdown-item" {{on "click" this.onDownloadNodes}}>
+      <a class="dropdown-item"
+        role='button'
+        {{on "click" this.onDownloadNodes}}>
         {{#if this.download_in_progress}}
           <Spinner @inProgress={{this.download_in_progress}} />
         {{else}}
@@ -44,8 +50,10 @@
     </li>
     <li><hr class="dropdown-divider"></li>
     <li>
-      <a class="dropdown-item" {{on "click" @openConfirmDeletionModal}}>
-        <i class="fa fa-times mx-2"></i>Delete
+      <a class="dropdown-item"
+        role='button'
+        {{on "click" @openConfirmDeletionModal}}>
+        <i class="bi bi-trash mx-2"></i>Delete
       </a>
     </li>
   {{/if}}
diff --git a/app/components/viewer/action_buttons/index.hbs b/app/components/viewer/action_buttons/index.hbs
index 88eea1656ee9c6e9d8ffe6ae73bf6e14428ec3a2..4ea435de08bb48a6a95c3f2f69bff0517cabc88f 100644
--- a/app/components/viewer/action_buttons/index.hbs
+++ b/app/components/viewer/action_buttons/index.hbs
@@ -53,38 +53,34 @@
     <ul class="dropdown-menu"
       aria-expand="false"
       aria-labelledby="display-mode">
-      <li class="dropdown-item">
-        <button
-          class="btn"
+      <li>
+        <a class="dropdown-item" role='button'
           {{on "click" (fn @onRotateClockwise 270)}}>
           <i class="bi bi-arrow-clockwise"></i>
           Rotate 90 CW
-        </button>
+        </a>
       </li>
-      <li class="dropdown-item">
-        <button
-          class="btn"
+      <li>
+        <a class="dropdown-item" role='button'
           {{on "click" (fn @onRotateClockwise 180)}}>
           <i class="bi bi-arrow-clockwise"></i>
           Rotate 180 CW
-        </button>
+        </a>
       </li>
-
-      <li class="dropdown-item">
-        <button
-          class="btn"
+      <li>
+        <a class="dropdown-item" role='button'
           {{on "click" (fn @onRotateClockwise 90)}}>
           <i class="bi bi-arrow-counterclockwise"></i>
           Rotate 90 CCW
-        </button>
+        </a>
       </li>
-      <li class="dropdown-item">
-        <button
-          class="btn"
+      <li><hr class="dropdown-divider"></li>
+      <li>
+        <a class="dropdown-item" role='button'
           {{on "click" @openConfirmDeletionModal}}>
-          <i class="fa fa-times text-danger"></i>
+          <i class="bi bi-trash mx-2"></i>
           Delete Pages
-        </button>
+        </a>
       </li>
     </ul>
   {{/if}}
diff --git a/app/components/viewer/context_menu/index.hbs b/app/components/viewer/context_menu/index.hbs
index 22fd31f0f1e8e634a1c96b0cec360bd7272376ce..cd4f114fefc7205857ea782b48aed0b0f69875f1 100644
--- a/app/components/viewer/context_menu/index.hbs
+++ b/app/components/viewer/context_menu/index.hbs
@@ -1,19 +1,43 @@
 <ul class="dropdown-menu context-menu">
   <li>
-    <a class="dropdown-item" {{on "click" @openRenameDocumentModal}}>
+    <a class="dropdown-item" {{on "click" @openRenameDocumentModal}} role='button'>
       <i class="fa fa-edit mx-2"></i>Rename
     </a>
   </li>
     {{#if this.one_or_multiple_pages_selected}}
-    <li>
-      <a class="dropdown-item" {{on "click" @onExtractPages}}>
-        <i class="fa fa-cut mx-2"></i>Extract Pages
-      </a>
+    <li><hr class="dropdown-divider"></li>
+    <li class="dropdown dropdown-submenu dropend">
+      <div class="dropdown">
+        <a class="dropdown-item dropdown-toggle" role='button' data-toggle="dropdown">
+          <i class="bi bi-arrow-clockwise mx-2"></i>
+          Rotate
+        </a>
+          <ul class="dropdown-menu dropdown-menu-left">
+            <li>
+              <a class="dropdown-item" {{on "click" (fn @onRotateClockwise 270)}} role='button'>
+                <i class="bi bi-arrow-clockwise"></i>
+                90° CW
+              </a>
+            </li>
+            <li>
+              <a class="dropdown-item" {{on "click" (fn @onRotateClockwise 180)}} role='button'>
+                <i class="bi bi-arrow-clockwise"></i>
+                180° CW
+              </a>
+            </li>
+            <li>
+              <a class="dropdown-item" {{on "click" (fn @onRotateClockwise 90)}} role='button'>
+                <i class="bi bi-arrow-counterclockwise"></i>
+                90° CCW
+              </a>
+            </li>
+          </ul>
+      </div>
     </li>
     <li><hr class="dropdown-divider"></li>
     <li>
-      <a class="dropdown-item" {{on "click" @openConfirmDeletionModal}}>
-        <i class="fa fa-times mx-2"></i>Delete Pages
+      <a class="dropdown-item" {{on "click" @openConfirmDeletionModal}} role='button'>
+        <i class="bi bi-trash mx-2"></i>Delete Pages
       </a>
     </li>
   {{/if}}
diff --git a/app/components/viewer/index.hbs b/app/components/viewer/index.hbs
index e63558b35310cb3ac78fcc138dc830ebb37a72f3..24bad363299f50403251f5055fc8b50937b7fbc6 100644
--- a/app/components/viewer/index.hbs
+++ b/app/components/viewer/index.hbs
@@ -24,9 +24,9 @@
 
   <Viewer::ContextMenu
     @selectedPages={{this.selected_pages}}
+    @onRotateClockwise={{this.onRotateClockwise}}
     @openRenameDocumentModal={{this.openRenameDocumentModal}}
-    @openConfirmDeletionModal={{this.openConfirmDeletionModal}}
-    @onExtractPages={{this.onExtractPages}} />
+    @openConfirmDeletionModal={{this.openConfirmDeletionModal}} />
 
   <Modal::DeletePages
     id="delete-pages"
diff --git a/app/components/viewer/index.js b/app/components/viewer/index.js
index f006ad13137247343a0c37df22e84b0e42bf0496..1050fd7644f8c1cc88ae8c147ff7f1c79d69ef18 100644
--- a/app/components/viewer/index.js
+++ b/app/components/viewer/index.js
@@ -232,10 +232,6 @@ export default class ViewerComponent extends Component {
     this.show_rename_node_modal = false;
   }
 
-  @action
-  onExtractPages() {
-  }
-
   @action
   async submitConfirmDeletionModal() {
     let page_ids = [];
diff --git a/app/components/viewer/thumbnails/index.js b/app/components/viewer/thumbnails/index.js
index 73905214f639dd0cd52b4f4ddd3706cb29a9d9bc..3cf855f93fc25dd930bcca97dc11debcd270edd5 100644
--- a/app/components/viewer/thumbnails/index.js
+++ b/app/components/viewer/thumbnails/index.js
@@ -23,6 +23,7 @@ export default class ViewerThumbnailsComponent extends Component {
       drop_placeholder_pos,
       source_doc_id;
 
+    event.preventDefault();
     data = event.dataTransfer.getData('application/x.page');
 
     if (!data) {
@@ -67,7 +68,7 @@ export default class ViewerThumbnailsComponent extends Component {
       rect,
       cursor_before_child = 0,
       outside_all_thumbnails = true,
-      svg_element,
+      svg_or_img_element,
       data,
       json_data,
       original_pos;
@@ -93,9 +94,10 @@ export default class ViewerThumbnailsComponent extends Component {
       // it may be a paceholder used as suggestion that it is OK to drop page here.
       // Real page thumbnail DOM element contains DOM element for image/svg
       // and DOM element denoting page number
-      svg_element = thumbnail_dom_item.querySelector('svg');
-      if (svg_element) { // in case of thumbnail placeholder, there won't be SVG element
-        rect = svg_element.getBoundingClientRect();
+      svg_or_img_element = thumbnail_dom_item.querySelector('svg') ||
+        thumbnail_dom_item.querySelector('img');
+      if (svg_or_img_element) { // in case of thumbnail placeholder, there won't be SVG element
+        rect = svg_or_img_element.getBoundingClientRect();
 
         if (cursor_coord.y <= rect.bottom || cursor_coord.y <= rect.top) {
           cursor_before_child += 1;