         if (event.target == this)
             return;
         
-        mouseCaptured = false;
+		// If faking down state, let's not interrupt it because of a mouseUp somewhere 
+		// else on the screen
+		if (!(mouseUpDeselectTimer && mouseUpDeselectTimer.running))
+       		mouseCaptured = false;
         
         // If the mouseDownSelectTimer is still running, 
         // we don't want to ever go in to the down state in this case, so stop it

                        mouseCaptured = true;
                        startDeselectButtonAfterDelayTimer();
                    }
                }
                break;
            }

                if (mouseEvent.buttonDown && !mouseCaptured)
                    return;
                hovered = true;
				rollOutWhileFakingDownState = false;
                break;
            }

            case MouseEvent.ROLL_OUT:
            {
				if (mouseUpDeselectTimer && mouseUpDeselectTimer.running)
				{
					// We're trying to flash the down state for longer, 
					// so let's not leave the hovered state just yet
					rollOutWhileFakingDownState = true;
				}
				else
				{
					hovered = false;
				}
                break;
            }
            
