diff --git a/CHANGES.txt b/CHANGES.txt
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,5 +1,8 @@
 Changelog for HLint
 
+1.9.34
+    #154, fix some incorrect line numbers in literate Haskell
+    #161, fix literate Haskell and CPP
 1.9.33
     #240, remove type-incorrect "on" hint
     #234, warn about join seq
diff --git a/hlint.cabal b/hlint.cabal
--- a/hlint.cabal
+++ b/hlint.cabal
@@ -1,7 +1,7 @@
 cabal-version:      >= 1.8
 build-type:         Simple
 name:               hlint
-version:            1.9.33
+version:            1.9.34
 license:            BSD3
 license-file:       LICENSE
 category:           Development
diff --git a/src/HSE/All.hs b/src/HSE/All.hs
--- a/src/HSE/All.hs
+++ b/src/HSE/All.hs
@@ -21,6 +21,8 @@
 import Language.Preprocessor.Cpphs
 import qualified Data.Map as Map
 import System.IO
+import Data.Functor
+import Prelude
 
 
 -- | Created with 'defaultParseFlags', used by 'parseModuleEx'.
@@ -50,7 +52,7 @@
 runCpp :: CppFlags -> FilePath -> String -> IO String
 runCpp NoCpp _ x = return x
 runCpp CppSimple _ x = return $ unlines [if "#" `isPrefixOf` trimStart x then "" else x | x <- lines x]
-runCpp (Cpphs o) file x = runCpphs o file x
+runCpp (Cpphs o) file x = drop 1 . dropWhile (/= '\n') <$> runCpphs o file x
 
 
 ---------------------------------------------------------------------
