diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/WBWRenderer.java b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/WBWRenderer.java
index cc73135..75d4e94 100644
--- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/WBWRenderer.java
+++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/WBWRenderer.java
@@ -23,7 +23,9 @@
 import org.eclipse.e4.core.di.annotations.Optional;
 import org.eclipse.e4.core.services.events.IEventBroker;
 import org.eclipse.e4.core.services.log.Logger;
+import org.eclipse.e4.ui.internal.workbench.Activator;
 import org.eclipse.e4.ui.internal.workbench.E4Workbench;
+import org.eclipse.e4.ui.internal.workbench.Policy;
 import org.eclipse.e4.ui.model.application.MApplication;
 import org.eclipse.e4.ui.model.application.ui.MContext;
 import org.eclipse.e4.ui.model.application.ui.MElementContainer;
@@ -109,6 +111,7 @@
 	private EventHandler shellUpdater;
 	private EventHandler visibilityHandler;
 	private EventHandler sizeHandler;
+	private EventHandler childHandler;
 
 	public WBWRenderer() {
 		super();
@@ -131,9 +134,7 @@
 				parent = ph.getParent();
 			}
 			if (parent instanceof MPartStack) {
-				parent.getTags().remove("active"); //$NON-NLS-1$
-				if (parent.getWidget() != null)
-					setCSSInfo(parent, parent.getWidget());
+				styleStack((MPartStack) parent, false);
 			} else {
 				if (activePart.getWidget() != null)
 					setCSSInfo(activePart, activePart.getWidget());
@@ -150,14 +151,23 @@
 				parent = ph.getParent();
 			}
 			if (parent instanceof MPartStack && parent.getWidget() != null) {
-				parent.getTags().add("active"); //$NON-NLS-1$
-				setCSSInfo(parent, parent.getWidget());
+				styleStack((MPartStack) parent, true);
 			} else if (activePart.getWidget() != null) {
 				setCSSInfo(activePart, activePart.getWidget());
 			}
 		}
 	}
 
+	private void styleStack(MPartStack stack, boolean active) {
+		if (!active)
+			stack.getTags().remove("active"); //$NON-NLS-1$
+		else
+			stack.getTags().add("active"); //$NON-NLS-1$
+
+		if (stack.getWidget() != null)
+			setCSSInfo(stack, stack.getWidget());
+	}
+
 	private void closeDetachedWindow(MWindow window) {
 		EPartService partService = (EPartService) window.getContext().get(
 				EPartService.class.getName());
@@ -297,6 +307,40 @@
 
 		eventBroker.subscribe(UIEvents.buildTopic(UIEvents.Window.TOPIC),
 				sizeHandler);
+
+		childHandler = new EventHandler() {
+			public void handleEvent(Event event) {
+				// Track additions/removals of the active part and keep its
+				// stack styled correctly
+				Object changedObj = event
+						.getProperty(UIEvents.EventTags.ELEMENT);
+				if (!(changedObj instanceof MPartStack))
+					return;
+				MPartStack stack = (MPartStack) changedObj;
+
+				String eventType = (String) event
+						.getProperty(UIEvents.EventTags.TYPE);
+				if (UIEvents.EventTypes.ADD.equals(eventType)) {
+					MUIElement added = (MUIElement) event
+							.getProperty(UIEvents.EventTags.NEW_VALUE);
+					if (added == activePart) {
+						styleStack(stack, true);
+					}
+				} else if (UIEvents.EventTypes.REMOVE.equals(eventType)) {
+					Activator.trace(Policy.DEBUG_RENDERER,
+							"Child Removed", null); //$NON-NLS-1$
+					MUIElement removed = (MUIElement) event
+							.getProperty(UIEvents.EventTags.OLD_VALUE);
+					if (removed == activePart) {
+						styleStack(stack, false);
+					}
+				}
+			}
+		};
+
+		eventBroker.subscribe(UIEvents.buildTopic(
+				UIEvents.ElementContainer.TOPIC,
+				UIEvents.ElementContainer.CHILDREN), childHandler);
 	}
 
 	@PreDestroy
@@ -304,6 +348,7 @@
 		eventBroker.unsubscribe(shellUpdater);
 		eventBroker.unsubscribe(visibilityHandler);
 		eventBroker.unsubscribe(sizeHandler);
+		eventBroker.unsubscribe(childHandler);
 	}
 
 	public Object createWidget(MUIElement element, Object parent) {
diff --git a/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/internal/workbench/swt/PartRenderingEngine.java b/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/internal/workbench/swt/PartRenderingEngine.java
index bf287db..d639473 100644
--- a/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/internal/workbench/swt/PartRenderingEngine.java
+++ b/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/internal/workbench/swt/PartRenderingEngine.java
@@ -269,7 +269,7 @@
 				if (newLocation == EModelService.IN_SHARED_AREA
 						|| newLocation == EModelService.OUTSIDE_PERSPECTIVE) {
 					MWindow topWin = modelService.getTopLevelWindowFor(added);
-					modelService.removeLocalPlaceholders(topWin, null);
+					modelService.hideLocalPlaceholders(topWin, null);
 				}
 			} else if (UIEvents.EventTypes.REMOVE.equals(eventType)) {
 				Activator.trace(Policy.DEBUG_RENDERER, "Child Removed", null); //$NON-NLS-1$
diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ModelServiceImpl.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ModelServiceImpl.java
index 4fa841a..e61d786 100644
--- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ModelServiceImpl.java
+++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ModelServiceImpl.java
@@ -42,6 +42,7 @@
 import org.eclipse.e4.ui.model.application.ui.menu.MToolControl;
 import org.eclipse.e4.ui.model.internal.ModelUtils;
 import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 
@@ -368,11 +369,27 @@
 	 */
 	public MPlaceholder findPlaceholderFor(MWindow window, MUIElement element) {
 		List<MPlaceholder> phList = findPerspectiveElements(window, null, MPlaceholder.class, null);
+		List<MPlaceholder> elementRefs = new ArrayList<MPlaceholder>();
 		for (MPlaceholder ph : phList) {
 			if (ph.getRef() == element)
-				return ph;
+				elementRefs.add(ph);
 		}
-		return null;
+
+		if (elementRefs.size() == 0)
+			return null;
+
+		if (elementRefs.size() == 1)
+			return elementRefs.get(0);
+
+		// If there is more than one placeholder then return the one in the shared area
+		for (MPlaceholder refPh : elementRefs) {
+			int loc = getElementLocation(refPh);
+			if ((loc & IN_SHARED_AREA) != 0)
+				return refPh;
+		}
+
+		// Just return the first one
+		return elementRefs.get(0);
 	}
 
 	/*
@@ -717,6 +734,19 @@
 		}
 		persp.getWindows().clear();
 
+		// Remove any views (Placeholders) from the shared area
+		EPartService ps = window.getContext().get(EPartService.class);
+		List<MArea> areas = findElements(window, null, MArea.class, null);
+		if (areas.size() == 1) {
+			MArea area = areas.get(0);
+			List<MPlaceholder> phList = findElements(area, null, MPlaceholder.class, null);
+			for (MPlaceholder ph : phList) {
+				ps.hidePart((MPart) ph.getRef());
+
+				ph.getParent().getChildren().remove(ph);
+			}
+		}
+
 		// Remove any minimized stacks for this perspective
 		List<MTrimBar> bars = findElements(window, null, MTrimBar.class, null);
 		List<MToolControl> toRemove = new ArrayList<MToolControl>();
@@ -875,7 +905,7 @@
 	 * .ui.model.application.ui.basic.MWindow,
 	 * org.eclipse.e4.ui.model.application.ui.advanced.MPerspective)
 	 */
-	public void removeLocalPlaceholders(MWindow window, MPerspective perspective) {
+	public void hideLocalPlaceholders(MWindow window, MPerspective perspective) {
 		List<MPlaceholder> globals = findElements(window, null, MPlaceholder.class, null,
 				OUTSIDE_PERSPECTIVE | IN_SHARED_AREA);
 
@@ -892,8 +922,8 @@
 			for (MPlaceholder local : locals) {
 				for (MPlaceholder global : globals) {
 					if (global.getRef() == local.getRef()) {
+						local.setToBeRendered(false);
 						MElementContainer<MUIElement> localParent = local.getParent();
-						local.getParent().getChildren().remove(local);
 						setStackVisibility(localParent);
 					}
 				}
diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/workbench/modeling/EModelService.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/workbench/modeling/EModelService.java
index a7ef3c2..8b25baf 100644
--- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/workbench/modeling/EModelService.java
+++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/workbench/modeling/EModelService.java
@@ -405,12 +405,16 @@
 
 	/**
 	 * This method ensures that there will never be two placeholders for the same referenced element
-	 * visible in the presentation at the same time. It does this by removing placeholders which are
+	 * visible in the presentation at the same time. It does this by hiding placeholders which are
 	 * contained in any MPerspective if there is a placeholder for the element in any 'shared' area
-	 * (i.e. visible regardless of which perspective is visible.
+	 * (i.e. visible regardless of which perspective is visible) by setting its 'toBeRendered' state
+	 * to <code>false</code>.
 	 * 
 	 * @param window
+	 *            The window to modify
 	 * @param perspective
+	 *            if non-null specifies the specific perspective to modify, otherwise all
+	 *            perspectives in the window are checked
 	 */
-	public void removeLocalPlaceholders(MWindow window, MPerspective perspective);
+	public void hideLocalPlaceholders(MWindow window, MPerspective perspective);
 }
