diff --git a/app/src/main/java/org/exthmui/game/services/OverlayService.java b/app/src/main/java/org/exthmui/game/services/OverlayService.java
index 29ef046..439c33d 100644
--- a/app/src/main/java/org/exthmui/game/services/OverlayService.java
+++ b/app/src/main/java/org/exthmui/game/services/OverlayService.java
@@ -204,7 +204,6 @@
                 private int origY;
                 private int touchX;
                 private int touchY;
-                private boolean isMoved;
 
                 @Override
                 public boolean onTouch(View v, MotionEvent event) {
@@ -219,7 +218,6 @@
                             touchY = y;
                             break;
                         case MotionEvent.ACTION_MOVE:
-                            isMoved = true;
                             mGamingFBLayoutParams.x = origX + x - touchX;
                             mGamingFBLayoutParams.y = origY + y - touchY;
                             if (mWindowManager != null) {
@@ -227,7 +225,7 @@
                             }
                             break;
                         case MotionEvent.ACTION_UP:
-                            if (!isMoved) {
+                            if (calcDistance(origX, origY, mGamingFBLayoutParams.x, mGamingFBLayoutParams.y) < 5) {
                                 v.performClick();
                             } else {
                                 if (ScreenUtil.isPortrait()) {
@@ -242,7 +240,6 @@
                                             .apply();
                                 }
                             }
-                            isMoved = false;
                             break;
                         default:
                             return false;
@@ -255,6 +252,10 @@
         }
     }
 
+    private double calcDistance(int x1, int y1, int x2, int y2) {
+        return Math.sqrt((x1-x2) * (x1-x2) + (y1-y2) * (y1-y2));
+    }
+
     /*
      * mode: 0=auto, 1=show, 2=hide
      */
