diff --git a/res/xml/settings.xml b/res/xml/settings.xml
index 50565c8..916b947 100644
--- a/res/xml/settings.xml
+++ b/res/xml/settings.xml
@@ -64,6 +64,6 @@
             android:dialogTitle="@string/volume_button_setting_title"
             android:entries="@array/volume_button_setting_entries"
             android:entryValues="@array/volume_button_setting_values"
-            android:defaultValue="1" />
+            android:defaultValue="0" />
     </PreferenceCategory>
 </PreferenceScreen>
diff --git a/src/com/android/deskclock/AlarmAlertFullScreen.java b/src/com/android/deskclock/AlarmAlertFullScreen.java
index 5515930..8f1582c 100644
--- a/src/com/android/deskclock/AlarmAlertFullScreen.java
+++ b/src/com/android/deskclock/AlarmAlertFullScreen.java
@@ -52,7 +52,6 @@
     private final boolean LOG = true;
     // These defaults must match the values in res/xml/settings.xml
     private static final String DEFAULT_SNOOZE = "10";
-    private static final String DEFAULT_VOLUME_BEHAVIOR = "2";
     protected static final String SCREEN_OFF = "screen_off";
 
     protected Alarm mAlarm;
@@ -119,7 +118,7 @@
         final String vol =
                 PreferenceManager.getDefaultSharedPreferences(this)
                 .getString(SettingsActivity.KEY_VOLUME_BEHAVIOR,
-                        DEFAULT_VOLUME_BEHAVIOR);
+                        SettingsActivity.DEFAULT_VOLUME_BEHAVIOR);
         mVolumeBehavior = Integer.parseInt(vol);
 
         final Window win = getWindow();
diff --git a/src/com/android/deskclock/AlarmInitReceiver.java b/src/com/android/deskclock/AlarmInitReceiver.java
index e3a8278..1dd7bb3 100644
--- a/src/com/android/deskclock/AlarmInitReceiver.java
+++ b/src/com/android/deskclock/AlarmInitReceiver.java
@@ -27,6 +27,9 @@
 
 public class AlarmInitReceiver extends BroadcastReceiver {
 
+    // A flag that indicates that switching the volume button default was done
+    private static final String PREF_VOLUME_DEF_DONE = "vol_def_done";
+
     /**
      * Sets alarm on ACTION_BOOT_COMPLETED.  Resets alarm on
      * TIME_SET, TIMEZONE_CHANGED
@@ -52,6 +55,12 @@
                     Log.v("AlarmInitReceiver - Reset timers and clear stopwatch data");
                     TimerObj.resetTimersInSharedPrefs(prefs);
                     Utils.clearSwSharedPref(prefs);
+
+                    if (!prefs.getBoolean(PREF_VOLUME_DEF_DONE, false)) {
+                        // Fix the default
+                        Log.v("AlarmInitReceiver - checking volume button default");
+                        switchVolumeButtonDefault(prefs);
+                    }
                 }
                 Alarms.setNextAlert(context);
                 result.finish();
@@ -60,4 +69,24 @@
             }
         });
     }
+
+    private void switchVolumeButtonDefault(SharedPreferences prefs) {
+        SharedPreferences.Editor editor = prefs.edit();
+
+        // Get the volume button behavior setting
+        final String vol = prefs.getString(SettingsActivity.KEY_VOLUME_BEHAVIOR,
+	        SettingsActivity.DEFAULT_VOLUME_BEHAVIOR);
+        // If the setting is "Snooze", change it to "Do Nothing"
+        if (SettingsActivity.OLD_DEFAULT_VOLUME_BEHAVIOR.equals(vol)) {
+                editor.putString(SettingsActivity.KEY_VOLUME_BEHAVIOR,
+                    SettingsActivity.DEFAULT_VOLUME_BEHAVIOR);
+            Log.v("AlarmInitReceiver - Reset volume button default");
+        } else {
+            Log.v("AlarmInitReceiver - No need to reset volume button default");
+        }
+
+        // Make sure we do it only once
+        editor.putBoolean(PREF_VOLUME_DEF_DONE, true);
+        editor.apply();
+    }
 }
diff --git a/src/com/android/deskclock/SettingsActivity.java b/src/com/android/deskclock/SettingsActivity.java
index ef2243f..9465670 100644
--- a/src/com/android/deskclock/SettingsActivity.java
+++ b/src/com/android/deskclock/SettingsActivity.java
@@ -64,6 +64,10 @@
     static final String KEY_VOLUME_BUTTONS =
             "volume_button_setting";
 
+    // Old and new default preferences, needed to switch the default on upgrade
+    public static final String DEFAULT_VOLUME_BEHAVIOR = "0";
+    public static final String OLD_DEFAULT_VOLUME_BEHAVIOR = "1";
+
     private static CharSequence[][] mTimezones;
     private long mTime;
 
