' :: String -> LayoutFuncGlowing -> CXy -> Double -> String -> C.Render Double
renderLayout' fname func (x, y) fsize text = do
  C.save
  (layB, lay, lw, lh) <- liftIO $ func fname (x, y) fsize text
  let (xt, yt) = truePosition fsize lw (x, y)
  mapM_ (moveShowLayout layB) 
    [(xt + xd, yt + yd) | xd <- [-0.7, 0.7], yd <- [-0.7, 0.7]]
  moveShowLayout lay (xt, yt)
  C.restore
  return $ yt + lh
  where
    moveShowLayout l (x', y') = C.moveTo x' y' >> G.showLayout l

renderLayo
renderLayout' :: String -> LayoutFuncGlowing -> CXy -> Double -> String -> C.Render Double
renderLayout' fname func (x, y) fsize text = do
  C.save
  (layB, lay, lw, lh) <- liftIO $ func fname (x, y) fsize text
  let (xt, yt) = truePosition fsize lw (x, y)
  mapM_ (moveShowLayout layB) 
    [(xt + xd, yt + yd) | xd <- [-0.7, 0.7], yd <- [-0.7, 0.7]]
  moveShowLayout lay (xt, yt)
  C.restore
  return $ yt + lh
  where
    moveShowLayout l (x', y') = C.moveTo x' y' >> G.showLayout l
renderLayout' fname func (x, y) fsize text = do
  C.save
  (layB, lay, lw, lh) <- liftIO $ func fname (x, y) fsize text
  let (xt, yt) = truePosition fsize lw (x, y)
  mapM_ (moveShowLayout layB) 
    [(xt + xd, yt + yd) | xd <- [-0.7, 0.7], yd <- [-0.7, 0.7]]
  moveShowLayout lay (xt, yt)
  C.restore
  return $ yt + lh
  where
    moveShowLayout l (x', y') = C.moveTo x' y' >> G.showLayout l