diff -Naur -x CVS src.orig/org/eclipse/draw2d/graph/CompoundDirectedGraphLayout.java src/org/eclipse/draw2d/graph/CompoundDirectedGraphLayout.java
--- src.orig/org/eclipse/draw2d/graph/CompoundDirectedGraphLayout.java	2007-03-15 13:45:56.000000000 +0100
+++ src/org/eclipse/draw2d/graph/CompoundDirectedGraphLayout.java	2007-09-05 14:58:03.000000000 +0200
@@ -38,7 +38,7 @@
 public final class CompoundDirectedGraphLayout extends DirectedGraphLayout {
 
 void init() {
-	steps.add(new TransposeMetrics());
+	steps.add(new CompoundTransposeMetrics());
 	steps.add(new CompoundBreakCycles());
 	steps.add(new RouteEdges());	
 	steps.add(new ConvertCompoundGraph());
diff -Naur -x CVS src.orig/org/eclipse/draw2d/graph/CompoundTransposeMetrics.java src/org/eclipse/draw2d/graph/CompoundTransposeMetrics.java
--- src.orig/org/eclipse/draw2d/graph/CompoundTransposeMetrics.java	1970-01-01 01:00:00.000000000 +0100
+++ src/org/eclipse/draw2d/graph/CompoundTransposeMetrics.java	2007-09-05 14:56:55.000000000 +0200
@@ -0,0 +1,35 @@
+/*******************************************************************************
+	(c) 2007 Klaus Zerwes zero-sys.net 
+	licened under the terms of the GNU General Public License (GPL),
+	version 2.0 or later, as published by the Free Software Foundation.  
+	See <http://www.gnu.org/copyleft/gpl.txt> for the terms of the latest 
+	version of the GNU General Public License.
+ *******************************************************************************/
+
+package org.eclipse.draw2d.graph;
+
+import org.eclipse.draw2d.PositionConstants;
+
+class CompoundTransposeMetrics extends TransposeMetrics {
+
+	public void revisit(DirectedGraph graph) {
+		CompoundDirectedGraph g = (CompoundDirectedGraph)graph;
+		if (g.getDirection() == PositionConstants.SOUTH) {
+			return;
+		}
+		super.revisit(g);
+		int temp;
+		for (int i = 0; i < g.subgraphs.size(); i++) {
+			Subgraph node = (Subgraph)g.subgraphs.get(i);
+			temp = node.width;
+			node.width = node.height;
+			node.height = temp;
+			temp = node.y;
+			node.y = node.x;
+			node.x = temp;
+			if (node.getPadding() != null) {
+				node.setPadding(t.t(node.getPadding()));
+			}
+		}
+	}
+}
