diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -4,6 +4,7 @@
   * allow the static linking exception to the LGPL
   * (1.19.1): don't warn about trailing comments in #ifdefs
   * (1.19.2): fix build error
+  * (1.19.3): bugfix for hlint ticket #161 - interaction of --unlit/--linepragma
 
 Version 1.18
 ------------
diff --git a/Language/Preprocessor/Cpphs/CppIfdef.hs b/Language/Preprocessor/Cpphs/CppIfdef.hs
--- a/Language/Preprocessor/Cpphs/CppIfdef.hs
+++ b/Language/Preprocessor/Cpphs/CppIfdef.hs
@@ -44,10 +44,11 @@
         -> String               -- ^ The input file content
         -> IO [(Posn,String)]   -- ^ The file after processing (in lines)
 cppIfdef fp syms search options =
-    cpp posn defs search options (Keep []) . (cppline posn:) . linesCpp
+    cpp posn defs search options (Keep []) . initial . linesCpp
   where
     posn = newfile fp
     defs = preDefine options syms
+    initial = if literate options then id else (cppline posn:)
 -- Previous versions had a very simple symbol table  mapping strings
 -- to strings.  Now the #ifdef pass uses a more elaborate table, in
 -- particular to deal with parameterised macros in conditionals.
diff --git a/Language/Preprocessor/Unlit.hs b/Language/Preprocessor/Unlit.hs
--- a/Language/Preprocessor/Unlit.hs
+++ b/Language/Preprocessor/Unlit.hs
@@ -21,6 +21,7 @@
                                    -> Include (read line) (unwords rest)
                                 _  -> Pre x
                              ) : classify xs
+--classify (x:xs) | "{-# LINE" `isPrefixOf` x = Program x: classify xs
 classify (x:xs) | all isSpace x = Blank:classify xs
 classify (x:xs)                 = Comment:classify xs
 
diff --git a/cpphs.cabal b/cpphs.cabal
--- a/cpphs.cabal
+++ b/cpphs.cabal
@@ -1,5 +1,5 @@
 Name: cpphs
-Version: 1.19.2
+Version: 1.19.3
 Copyright: 2004-2015, Malcolm Wallace
 License: LGPL
 License-File: LICENCE-LGPL
diff --git a/cpphs.hs b/cpphs.hs
--- a/cpphs.hs
+++ b/cpphs.hs
@@ -20,7 +20,7 @@
 import Data.List   ( isPrefixOf )
 
 version :: String
-version = "1.19.2"
+version = "1.19.3"
 
 main :: IO ()
 main = do
diff --git a/docs/index.html b/docs/index.html
--- a/docs/index.html
+++ b/docs/index.html
@@ -198,11 +198,12 @@
 <b>Current stable version:</b>
 
 <p>
-cpphs-1.19.2, release date 2015-07-31<br>
+cpphs-1.19.3, release date 2015-08-23<br>
 By HTTP:
 <a href="http://hackage.haskell.org/package/cpphs">Hackage</a>.
 <ul>
-<li> fix build error
+<li> bugfix for hlint ticket #161, for
+     the interaction of --unlit and --linepragma options
 </ul>
 
 <p>
@@ -224,6 +225,14 @@
 
 <p>
 <b>Older versions:</b>
+
+<p>
+cpphs-1.19.2, release date 2015-07-31<br>
+By HTTP:
+<a href="http://hackage.haskell.org/package/cpphs">Hackage</a>.
+<ul>
+<li> fix build error
+</ul>
 
 <p>
 cpphs-1.19.1, release date 2015-07-30<br>
