diff --git a/src/Language/Haskell/Stylish/Parse.hs b/src/Language/Haskell/Stylish/Parse.hs
--- a/src/Language/Haskell/Stylish/Parse.hs
+++ b/src/Language/Haskell/Stylish/Parse.hs
@@ -6,7 +6,7 @@
 
 --------------------------------------------------------------------------------
 import           Control.Monad.Error             (throwError)
-import           Data.Maybe                      (fromMaybe)
+import           Data.Maybe                      (fromMaybe, listToMaybe)
 import qualified Language.Haskell.Exts.Annotated as H
 
 
@@ -18,10 +18,13 @@
 --------------------------------------------------------------------------------
 -- | Filter out lines which use CPP macros
 unCpp :: String -> String
-unCpp = unlines . map unCpp' . lines
+unCpp = unlines . go False . lines
   where
-    unCpp' ('#' : _) = ""
-    unCpp' xs        = xs
+    go _           []       = []
+    go isMultiline (x : xs) =
+        let isCpp         = isMultiline || listToMaybe x == Just '#'
+            nextMultiline = isCpp && not (null x) && last x == '\\'
+        in (if isCpp then "" else x) : go nextMultiline xs
 
 
 --------------------------------------------------------------------------------
diff --git a/stylish-haskell.cabal b/stylish-haskell.cabal
--- a/stylish-haskell.cabal
+++ b/stylish-haskell.cabal
@@ -1,5 +1,5 @@
 Name:          stylish-haskell
-Version:       0.5.5.2
+Version:       0.5.6.0
 Synopsis:      Haskell code prettifier
 Homepage:      https://github.com/jaspervdj/stylish-haskell
 License:       BSD3
diff --git a/tests/Language/Haskell/Stylish/Parse/Tests.hs b/tests/Language/Haskell/Stylish/Parse/Tests.hs
--- a/tests/Language/Haskell/Stylish/Parse/Tests.hs
+++ b/tests/Language/Haskell/Stylish/Parse/Tests.hs
@@ -19,6 +19,7 @@
 tests = testGroup "Language.Haskell.Stylish.Parse"
     [ testCase "UTF-8 Byte Order Mark" testBom
     , testCase "Extra extensions"      testExtraExtensions
+    , testCase "Multiline CPP"         testMultilineCpp
     ]
 
 
@@ -36,6 +37,15 @@
 testExtraExtensions :: Assertion
 testExtraExtensions = assert $ isRight $
     parseModule ["TemplateHaskell"] Nothing "$(foo)"
+
+
+--------------------------------------------------------------------------------
+testMultilineCpp :: Assertion
+testMultilineCpp = assert $ isRight $ parseModule [] Nothing $ unlines
+    [ "{-# LANGUAGE CPP #-}"
+    , "#define foo bar \\"
+    , "             qux"
+    ]
 
 
 --------------------------------------------------------------------------------
