diff --git a/Graphics/Aosd.hs b/Graphics/Aosd.hs
--- a/Graphics/Aosd.hs
+++ b/Graphics/Aosd.hs
@@ -35,7 +35,7 @@
 import Graphics.Rendering.Cairo.Internal(runRender)
 import Data.Functor
 import Graphics.Rendering.Pango.Enums
-import Graphics.X11.Xlib(openDisplay,displayHeight,displayWidth,defaultScreen)
+import Graphics.X11.Xlib(openDisplay,closeDisplay,displayHeight,displayWidth,defaultScreen)
 
 class AosdRenderer a where
     toGeneralRenderer :: a -> IO GeneralRenderer
@@ -154,7 +154,25 @@
     )
 
 
+data ScreenSize = ScreenSize { screenWidth, screenHeight :: Int }
+    deriving(Show)
 
+
+
+getScreenSize :: IO ScreenSize
+getScreenSize = do
+        display <- openDisplay ""
+
+        let go = do
+                -- Work around unsafe FFI declarations in the X11 bindings...
+                screen <- evaluate $ defaultScreen display
+                screenWidth <- evaluate . fromIntegral $ displayWidth display screen
+                screenHeight <- evaluate . fromIntegral $ displayHeight display screen
+
+                return ScreenSize{..}
+
+        go `finally` closeDisplay display
+
 reconfigure0 :: AosdRenderer a => AosdOptions -> a -> Ptr C'Aosd -> IO ()
 reconfigure0 AosdOptions{..} renderer a = do
         GeneralRenderer{..} <- toGeneralRenderer renderer 
@@ -162,11 +180,7 @@
         
         maybeDo (c'aosd_set_transparency a . toAosdTransparency) transparency
 
-        display <- openDisplay ""
-        let screen = defaultScreen display
-            screenWidth = fromIntegral $ displayWidth display screen
-            screenHeight = fromIntegral $ displayHeight display screen
-
+        ScreenSize{..} <- getScreenSize
 
 
         let -- l=Left, t=Top, w=Width, h=Height 
diff --git a/aosd.cabal b/aosd.cabal
--- a/aosd.cabal
+++ b/aosd.cabal
@@ -2,7 +2,7 @@
 -- see
 -- http://www.haskell.org/cabal/release/cabal-latest/doc/users-guide/authors.html#pkg-descr.
 Name:                aosd
-Version:             0.1.1
+Version:             0.1.2
 Synopsis:            Bindings to libaosd, a library for Cairo-based on-screen displays
 Description:         
  <http://www.atheme.org/project/libaosd>
@@ -38,6 +38,10 @@
 Build-type:          Simple
 Extra-source-files:  test/test.hs
 Cabal-version:       >=1.10
+
+source-repository head
+  type:     hg
+  location: https://dschuessler@bitbucket.org/dschuessler/haskell-aosd 
 
 Library
   Default-Extensions: ForeignFunctionInterface
diff --git a/test/test.hs b/test/test.hs
--- a/test/test.hs
+++ b/test/test.hs
@@ -38,7 +38,7 @@
 
 
 alignmentsTest = do
-    sequence_ [ goText 2000 (\x -> x { width = Just width, 
+    sequence_ [ goText 1000 (\x -> x { width = Just width, 
                                        wrapMode = wrap, 
                                        alignment = Just al, 
                                        colour = magenta }) 
