diff --git a/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/editparts/ScopeEditPart.java b/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/editparts/ScopeEditPart.java
index 01ca03c..ba82e59 100644
--- a/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/editparts/ScopeEditPart.java
+++ b/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/editparts/ScopeEditPart.java
@@ -225,7 +225,6 @@
 		border.setShowCompensation(getCompensationHandler() != null);
 		border.setShowTermination(getTerminationHandler() != null);
 		border.setShowEvent(getEventHandler() != null);
-		border.setHasChildren(getChildren().size() != 0);
 		// Force a repaint, as the drawer images may have changed.
 		getFigure().repaint();
 	}
diff --git a/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/editparts/borders/ContainerBorder.java b/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/editparts/borders/ContainerBorder.java
index 6b1c658..0394770 100644
--- a/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/editparts/borders/ContainerBorder.java
+++ b/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/editparts/borders/ContainerBorder.java
@@ -246,11 +246,7 @@
 	public Insets getInsets(IFigure figure) {
 		if (isCollapsed()) return super.getInsets(figure);
 		calculate(figure);
-		int hInsets = hBorderInsets;
-		if (isCollapsed()) hInsets = 0;
-		int vInsets = vBorderInsets;
-		if (isCollapsed()) vInsets = 0;
-		Insets result = new Insets(vInsets + rectLabelBorder.height, hInsets, vInsets, hInsets);
+		Insets result = new Insets(vBorderInsets + rectLabelBorder.height, hBorderInsets, vBorderInsets, hBorderInsets);
 		result.left += DRAWER_WIDTH;
 		result.right += DRAWER_WIDTH;
 		return result;
diff --git a/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/editparts/borders/ScopeBorder.java b/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/editparts/borders/ScopeBorder.java
index 26a0fc0..925d56f 100644
--- a/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/editparts/borders/ScopeBorder.java
+++ b/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/editparts/borders/ScopeBorder.java
@@ -65,10 +65,6 @@
 	private Rectangle rectTermination;
 	private Rectangle rectEvent;
 	
-	// Whether or not we have children; used to determine whether
-	// to add extraSpace
-	private boolean hasChildren = false;
-	
 	public ScopeBorder(IFigure parentFigure, String labelText, Image image) {
 		super(true, IBPELUIConstants.ARC_WIDTH, parentFigure, labelText, image);
 		
@@ -96,14 +92,12 @@
 
 	public Dimension getPreferredSize(IFigure f) {
 		calculate(f);
-		if (isCollapsed()) {
-			return new Dimension(rectCollapsed.width + DRAWER_WIDTH * 2, rectCollapsed.height + expandedHeight);
+		Dimension d = new Dimension(rectCollapsed.width, rectCollapsed.height + expandedHeight);
+		d.width += DRAWER_WIDTH * 2;
+		if (!isCollapsed()) {
+			d.width += extraHorizontalSpace;
 		}
-		int extraSpace = 0;
-		if (!hasChildren) {
-			extraSpace = extraHorizontalSpace;
-		}
-		return new Dimension(expandedBounds.width + extraSpace, expandedBounds.height + expandedHeight);
+		return d;
 	}
 	
 	protected void doPaint(IFigure figure, Graphics graphics, Insets insets) {
@@ -359,8 +353,4 @@
 		calculate(parentFigure);
 		return expandedBounds;
 	}
-	
-	public void setHasChildren(boolean hasChildren) {
-		this.hasChildren = hasChildren;
-	}
 }
\ No newline at end of file
