diff --git a/src/components/ModalPortal.js b/src/components/ModalPortal.js
index 6a95202..c13ec91 100644
--- a/src/components/ModalPortal.js
+++ b/src/components/ModalPortal.js
@@ -64,8 +64,7 @@ export default class ModalPortal extends Component {
       beforeClose: false
     };
 
-    this.shouldClose = null;
-    this.moveFromContentToOverlay = null;
+    this.shouldClose = false;
   }
 
   componentDidMount() {
@@ -74,6 +73,7 @@ export default class ModalPortal extends Component {
       this.setFocusAfterRender(true);
       this.open();
     }
+    console.log(this.shouldClose);
   }
 
   componentWillReceiveProps(newProps) {
@@ -204,60 +204,36 @@ export default class ModalPortal extends Component {
     }
   }
 
-  handleOverlayOnMouseUp = event => {
-    console.log("handleOverlayOnMouseUp", event, event.target, event.currentTarget);
-  }
-
   handleOverlayOnMouseDown = event => {
-    console.log("handleOverlayOnMouseDown", event, event.target, event.currentTarget);
+    this.shouldClose = event.target === event.currentTarget;
   }
 
-  handleOverlayOnClick = event => {
-    console.log("handleOverlayOnClick", event, event.target, event.currentTarget);
-
-    if (this.shouldClose === null) {
-      this.shouldClose = true;
-    }
-
+  handleOverlayOnMouseUp = event => {
+    console.log("overlay up", this.shouldClose);
     if (this.shouldClose && this.props.shouldCloseOnOverlayClick) {
+      this.shouldClose = false;
+
       if (this.ownerHandlesClose()) {
         this.requestClose(event);
       } else {
         this.focusContent();
       }
     }
-    this.shouldClose = null;
-    this.moveFromContentToOverlay = null;
-  }
-
-  handleOverlayOnMouseUp = () => {
-    if (this.moveFromContentToOverlay === null) {
-      this.shouldClose = false;
-    }
-  }
 
-  handleContentOnMouseUp = () => {
-    this.shouldClose = false;
-  }
-
-  handleOverlayOnMouseDown = () => {
-    this.moveFromContentToOverlay = false;
   }
 
   handleContentOnClick = event => {
-    console.log("handleContentOnClick", event, event.target);
-
     this.shouldClose = false;
   }
 
   handleContentOnMouseUp = event => {
     console.log("handleContentOnMouseUp", event, event.target, event.currentTarget);
+    this.shouldClose = false;
   }
 
   handleContentOnMouseDown = event => {
     console.log("handleContentOnMouseDown", event, event.target);
     this.shouldClose = false;
-    this.moveFromContentToOverlay = false;
   }
 
   requestClose = event =>
@@ -305,7 +281,6 @@ export default class ModalPortal extends Component {
         ref={this.setOverlayRef}
         className={this.buildClassName('overlay', overlayClassName)}
         style={{ ...overlayStyles, ...this.props.style.overlay }}
-        onClick={this.handleOverlayOnClick}
         onMouseDown={this.handleOverlayOnMouseDown}
         onMouseUp={this.handleOverlayOnMouseUp}>
         <div
@@ -314,6 +289,7 @@ export default class ModalPortal extends Component {
           className={this.buildClassName('content', className)}
           tabIndex="-1"
           onKeyDown={this.handleKeyDown}
+          onMouseLeave={this.handleContentMouseLeave}
           onMouseUp={this.handleContentOnMouseUp}
           onMouseDown={this.handleContentOnMouseDown}
           onMouseUp={this.handleContentOnMouseUp}
