diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+[1.0.3](https://github.com/guillaume-nargeot/hpc-coveralls/issues?q=milestone:v1.0.3+is:closed)
+-----
+* Add upper bounds to fix issue related to retry-0.7 (issue #55)
+
 [1.0.2](https://github.com/guillaume-nargeot/hpc-coveralls/issues?q=milestone:v1.0.2+is:closed)
 -----
 * Fix output of --numeric-version command line option (issue #53)
diff --git a/hpc-coveralls.cabal b/hpc-coveralls.cabal
--- a/hpc-coveralls.cabal
+++ b/hpc-coveralls.cabal
@@ -1,5 +1,5 @@
 name:           hpc-coveralls
-version:        1.0.2
+version:        1.0.3
 synopsis:       Coveralls.io support for Haskell.
 description:
   This utility converts and sends Haskell projects hpc code coverage to
@@ -55,43 +55,43 @@
     Trace.Hpc.Coveralls.GitInfo,
     Trace.Hpc.Coveralls.Paths
   build-depends:
-    aeson >= 0.7.1,
-    base >= 4 && < 5,
-    bytestring >= 0.10,
+    aeson          >= 0.7.1   && <0.11,
+    base           >= 4       && < 5,
+    bytestring     >= 0.10    && <0.11,
     Cabal,
-    containers >= 0.5,
-    cmdargs >= 0.10,
-    curl >= 1.3.8,
-    directory >= 1.2,
-    directory-tree >= 0.12,
-    hpc >= 0.6,
-    process >= 1.1.0.1,
-    pureMD5 >= 2.1,
-    retry >= 0.5,
-    safe >= 0.3,
-    split,
-    transformers >= 0.4.1
+    containers     >= 0.5     && <0.6,
+    cmdargs        >= 0.10    && <0.11,
+    curl           >= 1.3.8   && <1.4,
+    directory      >= 1.2     && <1.3,
+    directory-tree >= 0.12    && <0.13,
+    hpc            >= 0.6     && <0.7,
+    process        >= 1.1.0.1 && <1.5,
+    pureMD5        >= 2.1     && <2.2,
+    retry          >= 0.5     && <0.8,
+    safe           >= 0.3     && <0.4,
+    split          >= 0.2.2   && <0.3,
+    transformers   >= 0.4.1   && <0.5
 
 executable hpc-coveralls
   hs-source-dirs: src
   main-is:        HpcCoverallsMain.hs
   build-depends:
-    aeson >= 0.7.1,
-    base >= 4 && < 5,
-    bytestring >= 0.10,
+    aeson          >= 0.7.1   && <0.11,
+    base           >= 4       && < 5,
+    bytestring     >= 0.10    && <0.11,
     Cabal,
-    containers >= 0.5,
-    cmdargs >= 0.10,
-    curl >= 1.3.8,
-    directory >= 1.2,
-    directory-tree >= 0.12,
-    hpc >= 0.6,
-    process >= 1.1.0.1,
-    pureMD5 >= 2.1,
-    retry >= 0.5,
-    safe >= 0.3,
-    split,
-    transformers >= 0.4.1
+    containers     >= 0.5     && <0.6,
+    cmdargs        >= 0.10    && <0.11,
+    curl           >= 1.3.8   && <1.4,
+    directory      >= 1.2     && <1.3,
+    directory-tree >= 0.12    && <0.13,
+    hpc            >= 0.6     && <0.7,
+    process        >= 1.1.0.1 && <1.5,
+    pureMD5        >= 2.1     && <2.2,
+    retry          >= 0.5     && <0.8,
+    safe           >= 0.3     && <0.4,
+    split          >= 0.2.2   && <0.3,
+    transformers   >= 0.4.1   && <0.5
   ghc-options:    -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns
 
 executable run-cabal-test
diff --git a/src/Trace/Hpc/Coveralls/Curl.hs b/src/Trace/Hpc/Coveralls/Curl.hs
--- a/src/Trace/Hpc/Coveralls/Curl.hs
+++ b/src/Trace/Hpc/Coveralls/Curl.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE OverloadedStrings #-}
 
 -- |
@@ -12,13 +13,14 @@
 module Trace.Hpc.Coveralls.Curl ( postJson, readCoverageResult, PostResult (..) ) where
 
 import           Control.Applicative
-import           Control.Monad
-import           Control.Retry
+import           Control.Monad (void, when)
+import           Control.Retry (RetryPolicy, exponentialBackoff, limitRetries, retrying)
 import           Data.Aeson
 import           Data.Aeson.Types (parseMaybe)
 import qualified Data.ByteString.Lazy.Char8 as LBS
 import           Data.List.Split
 import           Data.Maybe
+import           Data.Monoid ((<>))
 import           Network.Curl
 import           Safe
 import           Trace.Hpc.Coveralls.Types
@@ -60,7 +62,11 @@
     where tenSecondsInMicroSeconds = 10 * 1000 * 1000
 
 performWithRetry :: IO (Maybe a) -> IO (Maybe a)
+#if MIN_VERSION_retry(0,7,0)
+performWithRetry = retrying expRetryPolicy isNothingM . const
+#else
 performWithRetry = retrying expRetryPolicy isNothingM
+#endif
     where isNothingM _ = return . isNothing
 
 -- | Extract the total coverage percentage value from coveralls coverage result
