diff --git a/hoodle-render.cabal b/hoodle-render.cabal
--- a/hoodle-render.cabal
+++ b/hoodle-render.cabal
@@ -1,5 +1,5 @@
 Name:		hoodle-render
-Version:	0.3.1
+Version:	0.3.2
 Synopsis:       Hoodle file renderer
 Description: 	Rendering library using cairo for hoodle file format
 License: 	BSD3
@@ -26,11 +26,11 @@
                  containers >= 0.4, 
                  cairo == 0.12.*, 
                  svgcairo == 0.12.*,
-                 strict == 0.3.*, 
+                 strict >= 0.3, 
                  bytestring >= 0.9,
                  base64-bytestring >= 0.1, 
                  lens >= 2.5, 
-                 hoodle-types >= 0.2,
+                 hoodle-types >= 0.2.1,
                  gd >= 3000.7, 
                  unix >= 2.5,
                  uuid >= 1.2, 
diff --git a/src/Graphics/Hoodle/Render.hs b/src/Graphics/Hoodle/Render.hs
--- a/src/Graphics/Hoodle/Render.hs
+++ b/src/Graphics/Hoodle/Render.hs
@@ -60,7 +60,7 @@
 import           Data.Hoodle.Simple
 import           Data.Hoodle.BBox
 import           Data.Hoodle.Predefined 
-import           Data.Hoodle.Zipper 
+import           Data.Hoodle.Zipper hiding (moveTo) 
 import qualified Graphics.UI.Gtk.Poppler.Page as PopplerPage
 import qualified Graphics.Rendering.Cairo.SVG as RSVG
 -- from this package
@@ -125,13 +125,13 @@
           (ix',iy') = RSVG.svgGetSize rsvg
           ix = fromIntegral ix' 
           iy = fromIntegral iy'
-      clipBBox (Just (getBBox svgbbx))
+      -- clipBBox (Just (getBBox svgbbx))
       save 
       translate x y 
       scale ((x2-x1)/ix) ((y2-y1)/iy)
       RSVG.svgRender rsvg 
       restore
-      resetClip 
+      -- resetClip 
       return () 
 
 -- | render svg  
@@ -177,6 +177,21 @@
 -- R-structure 
 ----
 
+drawFallBackBkg :: Dimension -> Render () 
+drawFallBackBkg (Dim w h) = do 
+  setSourceRGBA 1 1 1 1 
+  rectangle 0 0 w h 
+  fill 
+  setSourceRGBA 0 0 0 1 
+  setLineWidth 5
+  moveTo 0 0
+  lineTo w h 
+  stroke 
+  moveTo w 0 
+  lineTo 0 h
+  stroke
+  
+
 -- | 
 renderRBkg :: (RBackground,Dimension) -> Render (RBackground,Dimension)
 renderRBkg (r,dim) = 
@@ -185,10 +200,10 @@
         drawBkgAndRecord (renderBkg (rbkg2Bkg r,dim))
         -- renderBkg (rbkg2Bkg r,dim) >> return (r,dim)
       (RBkgPDF _ _ _ p _) -> 
-        maybe (return (r,dim)) 
+        maybe (drawFallBackBkg dim >> return (r,dim)) 
               (\pg -> drawBkgAndRecord (bkgPdfRender pg)) p
       (RBkgEmbedPDF _ p _) -> 
-        maybe (return (r,dim)) 
+        maybe (drawFallBackBkg dim >> return (r,dim)) 
               (\pg -> drawBkgAndRecord (bkgPdfRender pg)) p 
   where 
     drawBkgAndRecord rdr = do 
@@ -218,6 +233,7 @@
       ix <- liftM fromIntegral (imageSurfaceGetWidth sfc)
       iy <- liftM fromIntegral (imageSurfaceGetHeight sfc)
       save 
+      -- setAntialias AntialiasNone      
       translate x y 
       scale ((x2-x1)/ix) ((y2-y1)/iy)
       setSourceSurface sfc 0 0 
@@ -233,13 +249,14 @@
           (ix',iy') = RSVG.svgGetSize rsvg
           ix = fromIntegral ix' 
           iy = fromIntegral iy'
-      clipBBox (Just (getBBox svgbbx))
+      --  clipBBox (Just (getBBox svgbbx))
       save 
+      -- setAntialias AntialiasNone
       translate x y 
       scale ((x2-x1)/ix) ((y2-y1)/iy)
       RSVG.svgRender rsvg 
       restore
-      resetClip 
+      -- resetClip 
       return () 
   return itm 
 renderRItem itm@(RItemLink lnkbbx mrsvg) = do 
@@ -251,13 +268,14 @@
           (ix',iy') = RSVG.svgGetSize rsvg
           ix = fromIntegral ix' 
           iy = fromIntegral iy'
-      clipBBox (Just (getBBox lnkbbx))
+      -- clipBBox (Just (getBBox lnkbbx))
       save 
+      -- setAntialias AntialiasNone
       translate x y 
       scale ((x2-x1)/ix) ((y2-y1)/iy)
       RSVG.svgRender rsvg 
       restore
-      resetClip 
+      -- resetClip 
       return () 
   return itm 
 
@@ -267,49 +285,96 @@
 -- InBBox --
 ------------
 
+{-
+renderRItem_InBBox :: Maybe BBox -> RItem -> Render RItem  
+renderRItem_InBBox _ itm@(RItemStroke strk) = renderStrk (bbxed_content strk) >> return itm
+renderRItem_InBBox mbbox itm@(RItemImage img msfc) = do  
+  case msfc of
+    Nothing -> renderImg (bbxed_content img)
+    Just sfc -> do 
+      let (x,y) = (img_pos . bbxed_content) img
+          BBox (x1,y1) (x2,y2) = getBBox img
+      ix <- liftM fromIntegral (imageSurfaceGetWidth sfc)
+      iy <- liftM fromIntegral (imageSurfaceGetHeight sfc)
+      save 
+      clipBBox (fmap (flip inflate 1) mbbox) 
+      translate x y 
+      scale ((x2-x1)/ix) ((y2-y1)/iy)
+      setSourceSurface sfc 0 0 
+      paint 
+      resetClip 
+      restore
+  return itm 
+renderRItem_InBBox mbbox itm@(RItemSVG svgbbx mrsvg) = do 
+  case mrsvg of
+    Nothing -> renderSVG (bbxed_content svgbbx)
+    Just rsvg -> do 
+      let (x,y) = (svg_pos . bbxed_content) svgbbx
+          BBox (x1,y1) (x2,y2) = getBBox svgbbx
+          (ix',iy') = RSVG.svgGetSize rsvg
+          ix = fromIntegral ix' 
+          iy = fromIntegral iy'
+      clipBBox (fmap (flip inflate 0.5) mbbox)
+      save 
+      translate x y 
+      scale ((x2-x1)/ix) ((y2-y1)/iy)
+      RSVG.svgRender rsvg 
+      resetClip 
+      restore
+      return () 
+  return itm 
+renderRItem_InBBox mbbox itm@(RItemLink lnkbbx mrsvg) = do 
+  case mrsvg of
+    Nothing -> renderLink (bbxed_content lnkbbx)
+    Just rsvg -> do 
+      let (x,y) = (link_pos . bbxed_content) lnkbbx
+          BBox (x1,y1) (x2,y2) = getBBox lnkbbx
+          (ix',iy') = RSVG.svgGetSize rsvg
+          ix = fromIntegral ix' 
+          iy = fromIntegral iy'
+      save 
+      clipBBox (fmap (flip inflate 0.5) mbbox)
+      translate x y 
+      scale ((x2-x1)/ix) ((y2-y1)/iy)
+      RSVG.svgRender rsvg 
+      resetClip 
+      restore
+      return () 
+  return itm 
+-}
+
+
 -- | background drawing in bbox 
 renderRBkg_InBBox :: Maybe BBox 
                   -> (RBackground,Dimension) 
                   -> Render (RBackground,Dimension)
 renderRBkg_InBBox mbbox (b,dim) = do 
-    clipBBox mbbox
+    clipBBox (fmap (flip inflate 1) mbbox)
+    -- clipBBox mbbox
     renderRBkg_Buf (b,dim)
     resetClip
     return (b,dim)
 
-{-    case b of 
-      RBkgSmpl _ _ _ -> do 
-        clipBBox mbbox
-        renderRBkg_Buf (b,dim)
-        resetClip
-      RBkgPDF _ _ _ _ _ -> do 
-        clipBBox mbbox
-        renderRBkg_Buf (b,dim)
-        resetClip
-      RBkgEmbedPDF _ _ _ -> do 
-        clipBBox mbbox
-        renderRBkg_Buf (b,dim)
-        resetClip -}
 
-
 -- | render RLayer within BBox after hittest items
 renderRLayer_InBBox :: Maybe BBox -> RLayer -> Render RLayer
 renderRLayer_InBBox mbbox layer = do  
-  clipBBox (fmap (flip inflate 1) mbbox) 
+  clipBBox (fmap (flip inflate 2) mbbox)  -- temporary
+  -- clipBBox mbbox 
   let hittestbbox = case mbbox of 
         Nothing -> NotHitted [] 
                    :- Hitted (view gitems layer) 
                    :- Empty 
         Just bbox -> (hltHittedByBBox bbox . view gitems) layer
   (mapM_ renderRItem . concatMap unHitted  . getB) hittestbbox
-  resetClip
-  -- return layer 
+  resetClip  
   -- simply twice rendering if whole redraw happening 
   case view gbuffer layer of 
     LyBuf (Just sfc) -> do 
       liftIO $ renderWith sfc $ do 
-        -- renderRLayer_InBBox mbbox lyr 
-        clipBBox (fmap (flip inflate 1) mbbox )
+        clipBBox (fmap (flip inflate 2) mbbox ) -- temporary
+        -- clipBBox mbbox 
+        -- setAntialias AntialiasNone
         setSourceRGBA 0 0 0 0 
         setOperator OperatorSource
         paint
@@ -318,6 +383,7 @@
         resetClip 
         return layer 
     _ -> return layer 
+
   
 
 
@@ -335,21 +401,29 @@
         case msfc of 
           Nothing -> renderRBkg (b,dim) >> return ()
           Just sfc -> do 
+            save
+            -- setAntialias AntialiasNone
             setSourceSurface sfc 0 0 
             paint 
+            restore
       RBkgPDF _ _ _n _ msfc -> do 
         case msfc of 
           Nothing -> renderRBkg (b,dim) >> return ()
           Just sfc -> do 
+            save
+            -- setAntialias AntialiasNone            
             setSourceSurface sfc 0 0 
             paint 
+            restore
       RBkgEmbedPDF _ _ msfc -> do 
         case msfc of 
           Nothing -> renderRBkg (b,dim) >> return ()
           Just sfc -> do 
+            save
+            -- setAntialias AntialiasNone            
             setSourceSurface sfc 0 0 
             paint 
-
+            restore
     return (b,dim)
 
 -- | 
@@ -410,12 +484,13 @@
 cnstrctRHoodle hdl = do 
   let hid = view hoodleID hdl 
       ttl = view title hdl 
+      revs = view revisions hdl 
       pgs = view pages hdl
       embeddedsrc = view embeddedPdf hdl 
   mdoc <- maybe (return Nothing) (\src -> liftIO $ popplerGetDocFromDataURI src)
             embeddedsrc
   npgs <- evalStateT (mapM cnstrctRPage_StateT pgs) (Just (Context "" "" Nothing mdoc)) 
-  return $ GHoodle hid ttl embeddedsrc (fromList npgs)          
+  return $ GHoodle hid ttl revs embeddedsrc (fromList npgs)          
    
 
 -- |
diff --git a/src/Graphics/Hoodle/Render/Background.hs b/src/Graphics/Hoodle/Render/Background.hs
--- a/src/Graphics/Hoodle/Render/Background.hs
+++ b/src/Graphics/Hoodle/Render/Background.hs
@@ -38,15 +38,6 @@
 -- 
 import Prelude hiding (mapM_)
 
-{-
-isPopplerEnabled :: Bool  
-#ifdef POPPLER
-isPopplerEnabled = True 
-#else
-isPopplerEnabled = False
-#endif
--} 
-
 -- |
 popplerGetDocFromFile :: ByteString -> IO (Maybe Poppler.Document)
 popplerGetDocFromFile fp = 
@@ -76,21 +67,24 @@
       removeFile tmpfile 
       return mdoc 
 
-
 -- |
 popplerGetPageFromDoc :: Poppler.Document 
                       -> Int -- ^ page number 
                       -> IO (Maybe Poppler.Page, Maybe Surface)
 popplerGetPageFromDoc doc pn = do   
-  pg <- Poppler.documentGetPage doc (pn-1) 
-  (w,h) <- PopplerPage.pageGetSize pg
-  sfc <- createImageSurface FormatARGB32 (floor w) (floor h)
-  renderWith sfc $ do   
-    setSourceRGBA 1 1 1 1
-    rectangle 0 0 w h 
-    fill
-    PopplerPage.pageRender pg
-  return (Just pg, Just sfc)
+  n <- Poppler.documentGetNPages doc 
+  if pn > n 
+    then return (Nothing, Nothing)
+    else do 
+      pg <- Poppler.documentGetPage doc (pn-1) 
+      (w,h) <- PopplerPage.pageGetSize pg
+      sfc <- createImageSurface FormatARGB32 (floor w) (floor h)
+      renderWith sfc $ do   
+        setSourceRGBA 1 1 1 1
+        rectangle 0 0 w h 
+        fill
+        PopplerPage.pageRender pg
+      return (Just pg, Just sfc)
 
 -- | draw ruling all 
 drawRuling :: Double -> Double -> ByteString -> Render () 
@@ -233,6 +227,7 @@
                 Just doc -> do 
                   liftIO $ popplerGetPageFromDoc doc pn
                 Nothing -> error "error2 in cnstrctRBkg_StateT" 
+              maybe (liftIO $ putStrLn ( "pn = " ++ show pn )) (const (return ())) mpage 
               return (RBkgPDF (Just oldd) oldf pn mpage msfc)
             Nothing -> error "error3 in cnstrctRBkg_StateT" 
     BackgroundEmbedPdf _ pn -> do 
diff --git a/src/Graphics/Hoodle/Render/Type/Hoodle.hs b/src/Graphics/Hoodle/Render/Type/Hoodle.hs
--- a/src/Graphics/Hoodle/Render/Type/Hoodle.hs
+++ b/src/Graphics/Hoodle/Render/Type/Hoodle.hs
@@ -75,6 +75,7 @@
 rHoodle2Hoodle :: RHoodle -> Hoodle 
 rHoodle2Hoodle = Hoodle <$> view ghoodleID
                         <*> view gtitle 
+                        <*> view grevisions
                         <*> view gembeddedpdf
                         <*> IM.elems . fmap rPage2Page . view gpages
 
