diff --git a/res/values/custom_arrays.xml b/res/values/custom_arrays.xml
index 46f1bc7..44d447b 100644
--- a/res/values/custom_arrays.xml
+++ b/res/values/custom_arrays.xml
@@ -248,4 +248,16 @@
         <item>1</item>
         <item>2</item>
     </string-array>
+    <!-- Power menu Animations  -->
+    <string-array name="power_menu_animations_entries">
+        <item>@string/power_menu_animation_enter</item>
+        <item>@string/power_menu_animation_bottom</item>
+        <item>@string/power_menu_animation_top</item>
+    </string-array>
+
+    <string-array name="power_menu_animations_values" translatable="false">
+        <item>0</item>
+        <item>1</item>
+        <item>2</item>
+    </string-array>
 </resources>
diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index 1fc58ae..353c8e2 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -327,6 +327,7 @@
     <string name="global_actions_title">Power menu</string>
     <string name="global_actions_summary">Actions shown in power menu</string>
     <string name="global_actions_header">Some actions are only visible depending on the setup or only if the device is unlocked</string>
+    <string name="global_actions_anim">Appearance</string>
 
     <string name="font_sample_text">11:57</string>
 
@@ -345,4 +346,11 @@
     <string name="status_bar_quick_qs_pulldown_off">Off</string>
     <string name="status_bar_quick_qs_pulldown_left">Left</string>
     <string name="status_bar_quick_qs_pulldown_right">Right</string>
+    <!-- Power menu Animations  -->
+    <string name="power_menu_animation_title">Power menu animation</string>
+    <string name="power_menu_animation_summary">Change the enter/exit animation of the power menu</string>
+    <string name="power_menu_animation_dialog_title">Select power menu animation</string>
+    <string name="power_menu_animation_enter">Omni (default)</string>
+    <string name="power_menu_animation_bottom">Bottom</string>
+    <string name="power_menu_animation_top">Top</string>
 </resources>
diff --git a/res/xml/global_actions.xml b/res/xml/global_actions.xml
index 2744ee3..0e5c439 100644
--- a/res/xml/global_actions.xml
+++ b/res/xml/global_actions.xml
@@ -71,4 +71,16 @@
             android:key="dnd"
             android:title="@string/global_actions_dnd_title"
             android:persistent="false" />
+    <PreferenceCategory
+        android:key="global_actions_anim" 
+        android:title="@string/global_actions_anim" >
+         <ListPreference
+            android:key="power_menu_animations"
+            android:title="@string/power_menu_animation_title"
+            android:dialogTitle="@string/power_menu_animation_dialog_title"
+            android:entries="@array/power_menu_animations_entries"
+            android:entryValues="@array/power_menu_animations_values"
+            android:summary="@string/power_menu_animation_summary"
+            android:persistent="false" />
+    </PreferenceCategory>
 </PreferenceScreen>
diff --git a/src/org/omnirom/omnigears/interfacesettings/GlobalActionsSettings.java b/src/org/omnirom/omnigears/interfacesettings/GlobalActionsSettings.java
index c2cdc59..5da2950 100644
--- a/src/org/omnirom/omnigears/interfacesettings/GlobalActionsSettings.java
+++ b/src/org/omnirom/omnigears/interfacesettings/GlobalActionsSettings.java
@@ -21,6 +21,7 @@
 import android.content.Context;
 import android.os.Bundle;
 import android.os.UserManager;
+import android.support.v7.preference.ListPreference;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceGroup;
 import android.support.v7.preference.PreferenceManager;
@@ -47,11 +48,14 @@
 public class GlobalActionsSettings extends SettingsPreferenceFragment implements
         OnPreferenceChangeListener, Indexable {
     private static final String TAG = "GlobalActionsSettings";
- //   private static final String GLOBAL_ACTIONS = "global_actions";
+    private static final String POWER_MENU_ANIMATIONS = "power_menu_animations";
+//   private static final String GLOBAL_ACTIONS = "global_actions";
 
     private LinkedHashMap<String, Boolean> mGlobalActionsMap;
 //    private PreferenceScreen prefScreen = null;
 
+    ListPreference mPowerMenuAnimations;
+
     @Override
     protected int getMetricsCategory() {
         return MetricsEvent.OMNI_SETTINGS;
@@ -77,6 +81,12 @@
         final String enabledActions = Settings.System.getString(contentResolver,
                 Settings.System.GLOBAL_ACTIONS_LIST);
 
+        mPowerMenuAnimations = (ListPreference) findPreference(POWER_MENU_ANIMATIONS);
+        mPowerMenuAnimations.setValue(String.valueOf(Settings.System.getInt(
+                getContentResolver(), Settings.System.POWER_MENU_ANIMATIONS, 0)));
+        mPowerMenuAnimations.setSummary(mPowerMenuAnimations.getEntry());
+        mPowerMenuAnimations.setOnPreferenceChangeListener(this);
+
         List<String> enabledActionsList = null;
         if (enabledActions != null) {
             enabledActionsList = Arrays.asList(enabledActions.split(","));
@@ -138,7 +148,16 @@
 
     @Override
     public boolean onPreferenceChange(Preference preference, Object objValue) {
-        return false;
+         ContentResolver resolver = getActivity().getContentResolver();
+         boolean result = false;
+         if (preference == mPowerMenuAnimations) {
+            Settings.System.putInt(getContentResolver(), Settings.System.POWER_MENU_ANIMATIONS,
+                    Integer.valueOf((String) objValue));
+            mPowerMenuAnimations.setValue(String.valueOf(objValue));
+            mPowerMenuAnimations.setSummary(mPowerMenuAnimations.getEntry());
+            return true;
+          }
+          return result;
     }
 
     public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
