diff --git a/plugins/org.eclipse.graphiti.ui/src/org/eclipse/graphiti/ui/internal/figures/GFAbstractRotatableDecoration.java b/plugins/org.eclipse.graphiti.ui/src/org/eclipse/graphiti/ui/internal/figures/GFAbstractRotatableDecoration.java
index 59ddc68..4228df2 100644
--- a/plugins/org.eclipse.graphiti.ui/src/org/eclipse/graphiti/ui/internal/figures/GFAbstractRotatableDecoration.java
+++ b/plugins/org.eclipse.graphiti.ui/src/org/eclipse/graphiti/ui/internal/figures/GFAbstractRotatableDecoration.java
@@ -87,8 +87,7 @@
 	 *            The GraphicsAlgorithm which provides the values to paint this
 	 *            Shape.
 	 */
-	public GFAbstractRotatableDecoration(IPictogramElementDelegate pictogramElementDelegate,
-			GraphicsAlgorithm graphicsAlgorithm) {
+	public GFAbstractRotatableDecoration(IPictogramElementDelegate pictogramElementDelegate, GraphicsAlgorithm graphicsAlgorithm) {
 		super(pictogramElementDelegate, graphicsAlgorithm);
 
 		// initialize values
@@ -150,8 +149,6 @@
 	 * {@link #getTouchPointDelta()}.
 	 */
 	protected void processRotatableDecorationValues() {
-		System.out.println("GFAbstractRotatableDecoration.processRotatableDecorationValues()");
-
 		// Calculate the angle between the x-axis and the line through
 		// [location, referencePoint].
 		// Add 180 degrees so that 0 degree is at 3 o'clock, increasing
@@ -168,20 +165,12 @@
 		double rotatedY = getInitialTouchPoint().x * sin + getInitialTouchPoint().y * cos;
 		touchPointDelta = new PrecisionPoint(getDecoratorLocation().x - rotatedX, getDecoratorLocation().y - rotatedY);
 
-		System.out.println("getInitialBounds() = " + getInitialBounds());
-		System.out.println("touchPointDelta = " + touchPointDelta);
-		System.out.println("rotatedX = " + rotatedX);
-		System.out.println("rotatedY = " + rotatedY);
-
 		// Calculate the bounds.
 		// This is a rough value, which is bigger than the smallest bounds would
 		// be.
 		int maxExtension = Math.max(getInitialBounds().width, getInitialBounds().height) + 10;
-		maxExtension = maxExtension * 2;
-		System.out.println("maxExtension = " + maxExtension);
-		int dLocation = maxExtension;
-		int dSize = dLocation + maxExtension;
-		bounds = new Rectangle(touchPointDelta.x - dLocation, touchPointDelta.y - dLocation, dSize, dSize);
+		bounds = new Rectangle(touchPointDelta.x - maxExtension, touchPointDelta.y - maxExtension, 3 * maxExtension,
+				3 * maxExtension);
 	}
 
 	// ============================ overwritten methods =======================
diff --git a/tests/org.eclipse.graphiti.testtool.sketch/src/org/eclipse/graphiti/testtool/sketch/features/ToggleDecorator.java b/tests/org.eclipse.graphiti.testtool.sketch/src/org/eclipse/graphiti/testtool/sketch/features/ToggleDecorator.java
index 504e62c..fc96f4f 100644
--- a/tests/org.eclipse.graphiti.testtool.sketch/src/org/eclipse/graphiti/testtool/sketch/features/ToggleDecorator.java
+++ b/tests/org.eclipse.graphiti.testtool.sketch/src/org/eclipse/graphiti/testtool/sketch/features/ToggleDecorator.java
@@ -22,7 +22,6 @@
 import org.eclipse.graphiti.features.IFeatureProvider;
 import org.eclipse.graphiti.features.context.ICustomContext;
 import org.eclipse.graphiti.features.custom.AbstractCustomFeature;
-import org.eclipse.graphiti.mm.algorithms.Ellipse;
 import org.eclipse.graphiti.mm.algorithms.Polyline;
 import org.eclipse.graphiti.mm.algorithms.Rectangle;
 import org.eclipse.graphiti.mm.algorithms.Text;
@@ -75,12 +74,6 @@
 				Text text = gaService.createText(decorator, "passive text"); //$NON-NLS-1$
 				text.setForeground(manageColor(IColorConstant.BLACK));
 				Graphiti.getLayoutService().setLocationAndSize(text, 25, 50, 100, 20);
-
-				decorator = pecService.createConnectionDecorator(connection, false, 0.5, true);
-				Ellipse e = gaService.createEllipse(decorator);
-				e.setForeground(manageColor(IColorConstant.DARK_BLUE));
-				Graphiti.getLayoutService().setLocationAndSize(e, 0, 0, 150, 150);
-
 			}
 		}
 
