@@ 31,13 31,17 @@ import           Graphics.Layout.CSS (CSSBox(..), finalizeCSS')
 import           Graphics.Layout.CSS.Internal (placeholderFont, Font'(..),
                                                 pattern2font, hbScale, CSSFont(..))
 import           Graphics.Layout.Box as B (zeroBox, PaddedBox(..), Size(..))
-import           Graphics.Layout (boxLayout, glyphsPerFont)
+import           Graphics.Layout (boxLayout, glyphsPerFont, LayoutItem(..))
 import           Graphics.Text.Font.Choose (nameParse)
 
 import           FreeType.FontConfig (instantiatePattern, bmpAndMetricsForIndex,
                                       FTFC_Subpixel(..))
 import           FreeType.Core.Base (ft_With_FreeType)
-import           Typograffiti (makeDrawGlyphs, allocAtlas)
+import           Typograffiti (makeDrawGlyphs, allocAtlas, AllocatedRendering(..),
+                                TextTransformMultiply(..))
+import           Linear.V4 (V4(..))
+import           Linear.V2 (V2(..))
+import           Data.Text.ParagraphLayout (Fragment(..))
 
 import SDL hiding (rotate)
 import Graphics.GL.Core32
@@ 106,6 110,13 @@ lowerVars "-rhapsode" = CSSCond.B True
 lowerVars _ = CSSCond.B False
 lowerToks _ = CSSCond.B False
 
+renderLayout drawText (LayoutSpan ((x, y), _) font self) = do
+    drawText' <- drawText $ fragmentGlyphs self
+    -- FIXME Allow CSS to set the colour.
+    liftIO $ arDraw drawText' [TextTransformMultiply $ V4 0 0 0 1]
+                    (V2 (fromEnum x) (fromEnum y))
+renderLayout drawText node = layoutGetChilds node `forM` renderLayout drawText
+
 main :: IO ()
 main = do
     sess <- newSession
@@ 168,7 179,7 @@ main = do
 
         fix $ \loop -> do
             events <- fmap eventPayload <$> pollEvents
-            liftIO $ glClearColor 0 0 0 1
+            liftIO $ glClearColor 1 1 1 1
             liftIO $ glClear GL_COLOR_BUFFER_BIT
 
             sz@(V2 dw dh) <- liftIO $ glGetDrawableSize w
@@ 178,6 189,8 @@ main = do
             let outerbox = zeroBox { B.min = size, B.size = size, B.max = size }
             let layout = boxLayout outerbox (finalizeCSS' sysfont style) False
 
+            renderLayout layout
+
             liftIO $ glSwapWindow w
             unless (QuitEvent `elem` events) loop
     return ()