diff --git a/cabal-cargs.cabal b/cabal-cargs.cabal
--- a/cabal-cargs.cabal
+++ b/cabal-cargs.cabal
@@ -1,5 +1,5 @@
 name: cabal-cargs
-version: 0.3
+version: 0.3.1
 cabal-version: >=1.9.2
 build-type: Simple
 license: BSD3
@@ -20,8 +20,8 @@
     tests/inputFiles/withoutSandbox/exe/Source.hs
     tests/inputFiles/withoutSandbox/lib/Source.hs
     tests/inputFiles/withSandbox/test.cabal
+    tests/inputFiles/withSandbox/cabal.sandbox.config
     tests/inputFiles/withSandbox/dist/dist-sandbox-6d1acfa0/.gitignore
-    tests/inputFiles/withSandbox/.cabal-sandbox/x86_64-linux-ghc-7.6.2-packages.conf.d/.gitignore
     tests/inputFiles/withSandbox/exe/Source.hs
     tests/inputFiles/withSandbox/lib/Source.hs
     tests/goldenFiles/withoutSandbox/*.txt
diff --git a/lib/CabalCargs/Spec.hs b/lib/CabalCargs/Spec.hs
--- a/lib/CabalCargs/Spec.hs
+++ b/lib/CabalCargs/Spec.hs
@@ -25,7 +25,8 @@
 import Filesystem.Path.CurrentOS ((</>))
 import qualified Filesystem as FS
 import qualified Data.Text as T
-import Data.List (find, isSuffixOf, isPrefixOf)
+import Data.List (find, isPrefixOf)
+import qualified Data.List as L
 import Data.Maybe (isJust)
 
 
@@ -43,6 +44,8 @@
 
 
 type Error = String
+
+io :: MonadIO m => IO a -> m a
 io = liftIO 
 
 
@@ -91,9 +94,9 @@
 --   the path to its package database is also returned.
 fromCabalFile :: FilePath -> S.Sections -> F.Fields -> EitherT Error IO Spec
 fromCabalFile file sections fields = do
-   pkgDB     <- io $ findPackageDB file
-   distDir   <- io $ findDistDir file
    pkgDescrp <- packageDescription file
+   pkgDB     <- findPackageDB file
+   distDir   <- io $ findDistDir file
    absFile   <- FP.encodeString <$> (io $ absoluteFile file)
    right $ Spec
       { sections      = sections
@@ -120,7 +123,7 @@
 fromSourceFile :: FilePath -> F.Fields -> EitherT Error IO Spec
 fromSourceFile file fields = do
    cabalFile   <- findCabalFile file
-   pkgDB       <- io $ findPackageDB cabalFile
+   pkgDB       <- findPackageDB cabalFile
    distDir     <- io $ findDistDir cabalFile
    pkgDescrp   <- packageDescription cabalFile
    srcSections <- io $ findSections file cabalFile pkgDescrp
@@ -261,21 +264,34 @@
 
 -- | Find the package database of the cabal sandbox from the given cabal file.
 --   The returned file path is relative to the directory of the cabal file.
-findPackageDB :: FilePath -> IO (Maybe FilePath)
+findPackageDB :: FilePath -> EitherT Error IO (Maybe FilePath)
 findPackageDB cabalFile = do
-   cabalDir <- absoluteDirectory cabalFile
-   let sandboxDir = cabalDir </> FP.decodeString ".cabal-sandbox"
-   hasDir <- FS.isDirectory sandboxDir
-   if hasDir
+   cabalDir <- io $ absoluteDirectory cabalFile
+   let sandboxConfig = cabalDir </> sandbox_config
+   isFile   <- io $ FS.isFile sandboxConfig
+   if isFile
       then do
-         files <- filterM FS.isDirectory =<< (FS.listDirectory sandboxDir)
-         return $ FP.encodeString . (stripPrefix cabalDir) <$> find isPackageDB files
-      else return Nothing
+         packageDB <- io $ readPackageDB sandboxConfig
+         case packageDB of
+              Just db -> right . Just $ stripPrefix cabalDir db
+              _       -> left $ "Couldn't find field 'package-db: ' in " ++ (show sandboxConfig)
+      else
+         right Nothing
 
    where
-      isPackageDB file = "packages.conf.d" `isSuffixOf` (FP.encodeString file)
+      -- | reads the 'package-db: ' field from the sandbox config file and returns the value of the field
+      readPackageDB :: FP.FilePath -> IO (Maybe FP.FilePath)
+      readPackageDB sandboxConfig = do
+         lines <- lines <$> Strict.readFile (FP.encodeString sandboxConfig)
+         return $ do
+            line      <- find (package_db `L.isPrefixOf`) lines
+            packageDB <- L.stripPrefix package_db line
+            return $ FP.decodeString packageDB
 
+      sandbox_config = FP.decodeString "cabal.sandbox.config"
+      package_db     = "package-db: "
 
+
 -- | Find the dist directory of the cabal build from the given cabal file. For a non sandboxed
 --   build it's just the directory 'dist' in the cabal build directory. For a sandboxed build
 --   it's the directory 'dist/dist-sandbox-*'. The returned file path is relative to the
@@ -288,7 +304,7 @@
    if hasDistDir
       then do
          files <- filterM FS.isDirectory =<< (FS.listDirectory distDir)
-         return $ FP.encodeString . (stripPrefix cabalDir) <$> maybe (Just distDir) Just (find isSandboxDistDir files)
+         return $ (stripPrefix cabalDir) <$> maybe (Just distDir) Just (find isSandboxDistDir files)
       else return Nothing
 
    where
@@ -309,13 +325,13 @@
 absoluteFile = FS.canonicalizePath . FP.decodeString
 
 
-stripPrefix :: FP.FilePath -> FP.FilePath -> FP.FilePath
+stripPrefix :: FP.FilePath -> FP.FilePath -> FilePath
 stripPrefix prefix file
    | Just stripped <- FP.stripPrefix prefix file
-   = stripped
+   = FP.encodeString stripped
 
    | otherwise
-   = file
+   = FP.encodeString file
 
 
 combineSections :: S.Sections -> [S.Section] -> S.Sections
diff --git a/tests/inputFiles/withSandbox/.cabal-sandbox/x86_64-linux-ghc-7.6.2-packages.conf.d/.gitignore b/tests/inputFiles/withSandbox/.cabal-sandbox/x86_64-linux-ghc-7.6.2-packages.conf.d/.gitignore
deleted file mode 100644
--- a/tests/inputFiles/withSandbox/.cabal-sandbox/x86_64-linux-ghc-7.6.2-packages.conf.d/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*
-!.gitignore
diff --git a/tests/inputFiles/withSandbox/cabal.sandbox.config b/tests/inputFiles/withSandbox/cabal.sandbox.config
new file mode 100644
--- /dev/null
+++ b/tests/inputFiles/withSandbox/cabal.sandbox.config
@@ -0,0 +1,25 @@
+-- This is a Cabal package environment file.
+-- THIS FILE IS AUTO-GENERATED. DO NOT EDIT DIRECTLY.
+-- Please create a 'cabal.config' file in the same directory
+-- if you want to change the default settings for this sandbox.
+
+
+local-repo: .cabal-sandbox/packages
+logs-dir: .cabal-sandbox/logs
+world-file: .cabal-sandbox/world
+user-install: False
+package-db: .cabal-sandbox/x86_64-linux-ghc-7.6.2-packages.conf.d
+build-summary: .cabal-sandbox/logs/build.log
+
+install-dirs 
+  prefix: .cabal-sandbox
+  bindir: $prefix/bin
+  libdir: $prefix/lib
+  libsubdir: $arch-$os-$compiler/$pkgid
+  libexecdir: $prefix/libexec
+  datadir: $prefix/share
+  datasubdir: $arch-$os-$compiler/$pkgid
+  docdir: $datadir/doc/$arch-$os-$compiler/$pkgid
+  htmldir: $docdir/html
+  haddockdir: $htmldir
+  sysconfdir: $prefix/etc
