diff --git a/src/org/kreed/vanilla/FullPlaybackActivity.java b/src/org/kreed/vanilla/FullPlaybackActivity.java
index 2b0479c4..10f666b4 100644
--- a/src/org/kreed/vanilla/FullPlaybackActivity.java
+++ b/src/org/kreed/vanilla/FullPlaybackActivity.java
@@ -22,6 +22,7 @@
 
 package org.kreed.vanilla;
 
+import android.content.Intent;
 import android.content.SharedPreferences;
 import android.graphics.Color;
 import android.os.Bundle;
@@ -74,6 +75,11 @@ public class FullPlaybackActivity extends PlaybackActivity implements SeekBar.On
 	private boolean mSeekBarTracking;
 	private boolean mPaused;
 
+	/**
+	 * The current display mode, which determines layout and cover render style.
+	 */
+	private int mDisplayMode;
+
 	/**
 	 * Cached StringBuilder for formatting track position.
 	 */
@@ -87,6 +93,7 @@ public class FullPlaybackActivity extends PlaybackActivity implements SeekBar.On
 		SharedPreferences settings = PlaybackService.getSettings(this);
 		int displayMode = Integer.parseInt(settings.getString("display_mode", "0"));
 		boolean hiddenControls = settings.getBoolean("hidden_controls", false);
+		mDisplayMode = displayMode;
 
 		int layout = R.layout.full_playback;
 		int coverStyle;
@@ -144,6 +151,18 @@ public class FullPlaybackActivity extends PlaybackActivity implements SeekBar.On
 		setDuration(0);
 	}
 
+	@Override
+	public void onStart()
+	{
+		super.onStart();
+
+		SharedPreferences settings = PlaybackService.getSettings(this);
+		if (mDisplayMode != Integer.parseInt(settings.getString("display_mode", "0"))) {
+			finish();
+			startActivity(new Intent(this, FullPlaybackActivity.class));
+		}
+	}
+
 	@Override
 	public void onResume()
 	{
diff --git a/src/org/kreed/vanilla/LibraryActivity.java b/src/org/kreed/vanilla/LibraryActivity.java
index 4be8d237..18bbfda1 100644
--- a/src/org/kreed/vanilla/LibraryActivity.java
+++ b/src/org/kreed/vanilla/LibraryActivity.java
@@ -178,6 +178,10 @@ public class LibraryActivity extends PlaybackActivity implements AdapterView.OnI
 		super.onStart();
 
 		SharedPreferences settings = PlaybackService.getSettings(this);
+		if (settings.getBoolean("controls_in_selector", false) != (mControls != null)) {
+			finish();
+			startActivity(new Intent(this, LibraryActivity.class));
+		}
 		mDefaultAction = Integer.parseInt(settings.getString("default_action_int", "0"));
 		mLastActedId = -2;
 		updateHeaders();
diff --git a/src/org/kreed/vanilla/PlaybackService.java b/src/org/kreed/vanilla/PlaybackService.java
index f7042b27..d034e385 100644
--- a/src/org/kreed/vanilla/PlaybackService.java
+++ b/src/org/kreed/vanilla/PlaybackService.java
@@ -393,18 +393,6 @@ public final class PlaybackService extends Service implements Handler.Callback,
 			userActionTriggered();
 		} else if ("disable_cover_art".equals(key)) {
 			Song.mDisableCoverArt = settings.getBoolean("disable_cover_art", false);
-		} else if ("display_mode".equals(key)) {
-			ArrayList<PlaybackActivity> activities = sActivities;
-			for (PlaybackActivity activity : activities) {
-				if (activity instanceof FullPlaybackActivity)
-					activity.finish();
-			}
-		} else if ("controls_in_selector".equals(key)) {
-			ArrayList<PlaybackActivity> activities = sActivities;
-			for (PlaybackActivity activity : activities) {
-				if (activity instanceof LibraryActivity)
-					activity.finish();
-			}
 		} else if ("notification_inverted_color".equals(key)) {
 			updateNotification();
 		} else if ("headset_only".equals(key)) {