diff --git a/src/main/resources/static/find-owners.js b/src/main/resources/static/find-owners.js
index 24a8554..e3338b7 100644
--- a/src/main/resources/static/find-owners.js
+++ b/src/main/resources/static/find-owners.js
@@ -69,7 +69,8 @@
     const HTML_SELECT_REVIEWERS =
         '<b>Check the box before owner names to select reviewers, ' +
         'then click the "Apply" button.' +
-        '</b><br><small>Each file needs at least one owner code review vote. ' +
+        '</b><br><small>If owner-approval requirement is enabled, ' +
+        'each file needs at least one Code-Review +1 vote from an owner. ' +
         'Owners listed after a file are ordered by their importance. ' +
         '(Or declare "<b><span style="font-size:80%;">' +
         'Exempt-From-Owner-Approval:</span></b> ' +
@@ -467,19 +468,23 @@
           pageDiv.className = LARGE_PAGE_STYLE;
           // Calculate required height, limited to 85% of window height,
           // and required width, limited to 75% of window width.
+          var maxHeight = Math.round(window.innerHeight * 0.85);
+          var maxWidth = Math.round(window.innerWidth * 0.75);
           pageDiv.style.top = '5%';
           pageDiv.style.height = 'auto';
           pageDiv.style.left = '10%';
           pageDiv.style.width = 'auto';
           var rect = pageDiv.getBoundingClientRect();
-          var h = Math.round(Math.min(rect.height - 2 * PADDING,
-                                      window.innerHeight * 0.85));
-          pageDiv.style.height = h + 'px';
-          pageDiv.style.top = Math.round((window.innerHeight - h) / 2) + 'px';
-          var w = Math.round(Math.min(rect.width - 2 * PADDING,
-                                      window.innerWidth * 0.75));
-          pageDiv.style.width = w + 'px';
-          pageDiv.style.left = Math.round((window.innerWidth - w) / 2) + 'px';
+          if (rect.width > maxWidth) {
+            pageDiv.style.width = maxWidth + 'px';
+            rect = pageDiv.getBoundingClientRect();
+          }
+          pageDiv.style.left = Math.round((window.innerWidth - rect.width) / 2) + 'px';
+          if (rect.height > maxHeight) {
+            pageDiv.style.height = maxHeight + 'px';
+            rect = pageDiv.getBoundingClientRect();
+          }
+          pageDiv.style.top = Math.round((window.innerHeight - rect.height) / 2) + 'px';
           pageDiv.style.visibility = 'visible';
         }
       }
@@ -511,12 +516,14 @@
     // Hide previous 'Find Owners' button under 'MORE'.
     changeActions.setActionHidden('revision', 'find-owners~find-owners', true);
     if (!!actionKey) {
-      changeActions.setActionHidden('revision', actionKey, false);
-    } else {
-      actionKey = changeActions.add('revision', 'Find Owners');
-      changeActions.addTapListener(actionKey,
-          () => popupFindOwnersPage(null, change, revision, false));
+      changeActions.removeTapListener(actionKey);
+      changeActions.remove(actionKey);
     }
+    actionKey = changeActions.add('revision', '[Find Owners]');
+    changeActions.setIcon(actionKey, 'robot');
+    changeActions.setTitle(actionKey, 'Find owners of changed files');
+    changeActions.addTapListener(actionKey,
+        () => popupFindOwnersPage(null, change, revision, false));
   }
   function onClick(e) {
     if (pageDiv.style.visibility != 'hidden' && !useContextPopup) {
