diff --git a/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/boxes/TestInlineContainer.java b/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/boxes/TestInlineContainer.java
index 28e8035..8c16167 100644
--- a/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/boxes/TestInlineContainer.java
+++ b/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/boxes/TestInlineContainer.java
@@ -16,6 +16,7 @@
 
 import java.util.Iterator;
 
+import org.eclipse.vex.core.internal.core.Color;
 import org.eclipse.vex.core.internal.core.FontSpec;
 import org.eclipse.vex.core.internal.layout.FakeGraphics;
 import org.junit.Before;
@@ -192,6 +193,7 @@
 	private static Square square(final int size) {
 		final Square square = new Square();
 		square.setSize(size);
+		square.setColor(Color.BLACK);
 		return square;
 	}
 
diff --git a/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/boxes/TestLineArrangement.java b/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/boxes/TestLineArrangement.java
index d180a3d..1b774f0 100644
--- a/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/boxes/TestLineArrangement.java
+++ b/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/boxes/TestLineArrangement.java
@@ -17,6 +17,7 @@
 import java.util.Arrays;
 import java.util.List;
 
+import org.eclipse.vex.core.internal.core.Color;
 import org.eclipse.vex.core.internal.core.FontSpec;
 import org.eclipse.vex.core.internal.core.TextAlign;
 import org.eclipse.vex.core.internal.layout.FakeGraphics;
@@ -158,6 +159,7 @@
 	private static Square square(final int size) {
 		final Square square = new Square();
 		square.setSize(size);
+		square.setColor(Color.BLACK);
 		return square;
 	}
 }
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/boxes/BoxFactory.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/boxes/BoxFactory.java
index f26ce0b..fd2d8e4 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/boxes/BoxFactory.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/boxes/BoxFactory.java
@@ -163,9 +163,10 @@
 		return staticText;
 	}
 
-	public static Square square(final int size) {
+	public static Square square(final int size, final Color color) {
 		final Square square = new Square();
 		square.setSize(size);
+		square.setColor(color);
 		return square;
 	}
 
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/boxes/Square.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/boxes/Square.java
index 812e093..61de003 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/boxes/Square.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/boxes/Square.java
@@ -11,7 +11,6 @@
 package org.eclipse.vex.core.internal.boxes;
 
 import org.eclipse.vex.core.internal.core.Color;
-import org.eclipse.vex.core.internal.core.ColorResource;
 import org.eclipse.vex.core.internal.core.Graphics;
 
 /**
@@ -20,6 +19,7 @@
 public class Square extends SimpleInlineBox {
 
 	private int size;
+	private Color color;
 
 	@Override
 	public int getWidth() {
@@ -40,6 +40,10 @@
 		this.size = size;
 	}
 
+	public void setColor(final Color color) {
+		this.color = color;
+	}
+
 	@Override
 	public void accept(final IBoxVisitor visitor) {
 		visitor.visit(this);
@@ -63,9 +67,7 @@
 
 	@Override
 	public void paint(final Graphics graphics) {
-		final ColorResource colorResource = graphics.getColor(Color.BLACK); // TODO store square color
-		graphics.setColor(colorResource);
-
+		graphics.setColor(graphics.getColor(color));
 		graphics.fillRect(0, 0, size, size);
 	}
 }
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/visualization/CssBoxFactory.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/visualization/CssBoxFactory.java
index 38079ba..c74924e 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/visualization/CssBoxFactory.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/visualization/CssBoxFactory.java
@@ -21,6 +21,7 @@
 import org.eclipse.vex.core.internal.boxes.NodeTag;
 import org.eclipse.vex.core.internal.boxes.Padding;
 import org.eclipse.vex.core.internal.boxes.Paragraph;
+import org.eclipse.vex.core.internal.boxes.Square;
 import org.eclipse.vex.core.internal.boxes.StaticText;
 import org.eclipse.vex.core.internal.boxes.StructuralFrame;
 import org.eclipse.vex.core.internal.boxes.TextContent;
@@ -99,6 +100,13 @@
 		return staticText;
 	}
 
+	public static Square square(final int size, final Styles styles) {
+		final Square square = new Square();
+		square.setSize(size);
+		square.setColor(styles.getColor());
+		return square;
+	}
+
 	public static NodeTag nodeTag(final INode node, final Styles styles) {
 		final NodeTag nodeTag = new NodeTag();
 		nodeTag.setNode(node);
