diff --git a/app/src/main/java/org/exthmui/game/misc/Constants.java b/app/src/main/java/org/exthmui/game/misc/Constants.java
index 7195d90..3c3b212 100644
--- a/app/src/main/java/org/exthmui/game/misc/Constants.java
+++ b/app/src/main/java/org/exthmui/game/misc/Constants.java
@@ -75,6 +75,8 @@
 
         // 快速启动app
         public static final String QUICK_START_APPS = Settings.System.GAMING_MODE_QS_APP_LIST;
+
+        public static final String MENU_OPACITY = Settings.System.GAMING_MODE_MENU_OPACITY;
     }
 
     public static class ConfigDefaultValues {
@@ -102,6 +104,9 @@
         // 性能配置
         public static final boolean CHANGE_PERFORMANCE_LEVEL = true;
         public static final int PERFORMANCE_LEVEL = 5;
+
+        // Opacity of Gaming Menu (in percent)
+        public static final int MENU_OPACITY = 75;
     }
 
     public static class GamingActionTargets {
diff --git a/app/src/main/java/org/exthmui/game/services/GamingService.java b/app/src/main/java/org/exthmui/game/services/GamingService.java
index 6966d03..6e1e92d 100644
--- a/app/src/main/java/org/exthmui/game/services/GamingService.java
+++ b/app/src/main/java/org/exthmui/game/services/GamingService.java
@@ -249,6 +249,9 @@
         boolean disableAutoBrightness = getBooleanSetting(Constants.ConfigKeys.DISABLE_AUTO_BRIGHTNESS, Constants.ConfigDefaultValues.DISABLE_AUTO_BRIGHTNESS);
         setDisableAutoBrightness(disableAutoBrightness, false);
 
+        // menu opacity
+        mCurrentConfig.putInt(Constants.ConfigKeys.MENU_OPACITY, getIntSetting(Constants.ConfigKeys.MENU_OPACITY, Constants.ConfigDefaultValues.MENU_OPACITY));
+
         Intent intent = new Intent(Constants.Broadcasts.BROADCAST_CONFIG_CHANGED);
         intent.putExtras(mCurrentConfig);
         LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
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 dc1860d..3f8640f 100644
--- a/app/src/main/java/org/exthmui/game/services/OverlayService.java
+++ b/app/src/main/java/org/exthmui/game/services/OverlayService.java
@@ -192,6 +192,11 @@
         if (performanceController != null) {
             performanceController.setLevel(configBundle.getInt(Constants.ConfigKeys.PERFORMANCE_LEVEL, Constants.ConfigDefaultValues.PERFORMANCE_LEVEL));
         }
+
+        if (mGamingMenu != null) {
+            final int menuOpacity = configBundle.getInt(Constants.ConfigKeys.MENU_OPACITY, Constants.ConfigDefaultValues.MENU_OPACITY);
+            mGamingMenu.getBackground().setAlpha(menuOpacity * 255 / 100);
+        }
     }
 
     private WindowManager.LayoutParams getBaseLayoutParams() {
@@ -216,6 +221,7 @@
 
             performanceController = mGamingOverlayView.findViewById(R.id.performance_controller);
             mGamingOverlayView.setOnClickListener(v -> showHideGamingMenu(0));
+            mGamingMenu.getBackground().setAlpha(Constants.ConfigDefaultValues.MENU_OPACITY * 255 / 100);
         }
     }
 
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 1beb1a4..305e4c2 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -3,6 +3,6 @@
     <color name="colorPrimary">#6200EE</color>
     <color name="colorPrimaryDark">#3700B3</color>
     <color name="colorAccent">#03DAC5</color>
-    <color name="gamingMenuBackground">#66000000</color>
+    <color name="gamingMenuBackground">#000000</color>
     <color name="GM2_grey_700">#5F6368</color>
-</resources>
\ No newline at end of file
+</resources>
