diff --git a/markdown2svg.cabal b/markdown2svg.cabal
--- a/markdown2svg.cabal
+++ b/markdown2svg.cabal
@@ -2,7 +2,7 @@
 cabal-version:	>=1.8
 
 name:		markdown2svg
-version:	0.0.1.10
+version:	0.0.1.11
 stability:	Experimental
 author:		Yoshikuni Jujo <PAF01143@nifty.ne.jp>
 maintainer:	Yoshikuni Jujo <PAF01143@nifty.ne.jp>
@@ -31,7 +31,7 @@
 source-repository	this
   type:		git
   location:	git://github.com/YoshikuniJujo/markdown2svg.git
-  tag:		0.0.1.10
+  tag:		0.0.1.11
 
 executable markdown2svg
   hs-source-dirs:	src
diff --git a/src/SVG.hs b/src/SVG.hs
--- a/src/SVG.hs
+++ b/src/SVG.hs
@@ -28,11 +28,13 @@
 width = (3535 *)
 height = (5000 *)
 
-topMargin, leftMargin, paraLeftMargin :: Double -> Double
+topMargin, leftMargin, paraLeftMargin, codeLeftMargin, listLeftMargin
+	:: Double -> Double
 topMargin = (400 *)
 leftMargin = (400 *)
 paraLeftMargin = (+) <$> leftMargin <*> (200 *)
 codeLeftMargin = (+) <$> paraLeftMargin <*> (200 *)
+listLeftMargin = (+) <$> paraLeftMargin <*> (200 *)
 
 bottomMargin :: Double -> Double
 bottomMargin = (400 *)
@@ -77,10 +79,10 @@
 	| h' > bottomBorder r = [] : (svgs' ++ one') : rest'
 	| otherwise = (svgs ++ one) : rest
 	where
-	(_, h', svgs) = listToSVGData 1 "*+-------" r h (paraLeftMargin r) l
-	(_, h'', svgs') = listToSVGData 1 "*+-------" r (topMargin r) (paraLeftMargin r) l
-	one : rest = textToSVGData fp r h' ts
-	one' : rest' = textToSVGData fp r h'' ts
+	(_, h', svgs) = listToSVGData 1 "*+-------" r (h + 100 * r) (listLeftMargin r) l
+	(_, h'', svgs') = listToSVGData 1 "*+-------" r (topMargin r) (listLeftMargin r) l
+	one : rest = textToSVGData fp r (h' + 100 * r) ts
+	one' : rest' = textToSVGData fp r (h'' + 100 * r) ts
 textToSVGData fp r h (Code s : ts)
 	| h' > bottomBorder r = [] : (svgs' ++ one') : rest'
 	| otherwise = (svgs ++ one) : rest
@@ -91,8 +93,8 @@
 	one' : rest' = textToSVGData fp r (h'' + codeSep r) ts
 textToSVGData fp r h (Image _ p ttl : ts)
 	| h + ht > bottomBorder r =
-		[] : (SVG.Image (TopLeft (leftMargin r) (topMargin r)) wt ht p : svg') : svgs'
-	| otherwise = (SVG.Image (TopLeft (leftMargin r) h) wt ht p : svg) : svgs
+		[] : (SVG.Image (TopLeft left (topMargin r)) wt ht p : svg') : svgs'
+	| otherwise = (SVG.Image (TopLeft left h) wt ht p : svg) : svgs
 	where
 	svg : svgs = textToSVGData fp r (h + ht + r * 100) ts
 	svg' : svgs' = textToSVGData fp r (topMargin r + ht + r * 100) ts
@@ -104,6 +106,10 @@
 		Just (w_, h_) -> (w_ * ratio, h_ * ratio)
 		_ -> (r * 1000, r * 1000)
 	ratio = width r - 2 * leftMargin r
+	left = case ttl of
+		"large" -> leftMargin r
+		"small" -> ratio * 4 / 10
+		_ -> ratio * 1 / 3
 
 splitAtString :: Int -> String -> (String, String)
 splitAtString len = sepStr 0
