diff --git a/src/index.js b/src/index.js
index 0b20643b..4de2f0a8 100644
--- a/src/index.js
+++ b/src/index.js
@@ -160,6 +160,11 @@ export default class Trigger extends React.Component {
         this.clickOutsideHandler = addEventListener(currentDocument,
           'mousedown', this.onDocumentClick);
       }
+      // close popup when trigger type is `contextMenu`, or `click` and window is blurred
+      if (!this.clickBlurOutsideHandler && (this.isClickToHide() || this.isContextMenuToShow())) {
+        this.clickBlurOutsideHandler = addEventListener(window,
+          'blur', this.onDocumentClick);
+      }
       // always hide on mobile
       if (!this.touchOutsideHandler) {
         currentDocument = currentDocument || props.getDocument();
@@ -167,16 +172,11 @@ export default class Trigger extends React.Component {
           'touchstart', this.onDocumentClick);
       }
       // close popup when trigger type contains 'onContextMenu' and document is scrolling.
-      if (!this.contextMenuOutsideHandler1 && this.isContextMenuToShow()) {
+      if (!this.contextMenuScrollOutsideHandler && this.isContextMenuToShow()) {
         currentDocument = currentDocument || props.getDocument();
-        this.contextMenuOutsideHandler1 = addEventListener(currentDocument,
+        this.contextMenuScrollOutsideHandler = addEventListener(currentDocument,
           'scroll', this.onContextMenuClose);
       }
-      // close popup when trigger type contains 'onContextMenu' and window is blur.
-      if (!this.contextMenuOutsideHandler2 && this.isContextMenuToShow()) {
-        this.contextMenuOutsideHandler2 = addEventListener(window,
-          'blur', this.onContextMenuClose);
-      }
       return;
     }
 
@@ -465,14 +465,14 @@ export default class Trigger extends React.Component {
       this.clickOutsideHandler = null;
     }
 
-    if (this.contextMenuOutsideHandler1) {
-      this.contextMenuOutsideHandler1.remove();
-      this.contextMenuOutsideHandler1 = null;
+    if (this.contextMenuScrollOutsideHandler) {
+      this.contextMenuScrollOutsideHandler.remove();
+      this.contextMenuScrollOutsideHandler = null;
     }
 
-    if (this.contextMenuOutsideHandler2) {
-      this.contextMenuOutsideHandler2.remove();
-      this.contextMenuOutsideHandler2 = null;
+    if (this.clickBlurOutsideHandler) {
+      this.clickBlurOutsideHandler.remove();
+      this.clickBlurOutsideHandler = null;
     }
 
     if (this.touchOutsideHandler) {