diff --git a/Distribution/Simple/Program.hs b/Distribution/Simple/Program.hs
index 3f0412a1b3f6d681a6222ae9b4947d7c2d9ec7ec..a2400fe41133abbebd5165be92db47dfce97bce9 100644
--- a/Distribution/Simple/Program.hs
+++ b/Distribution/Simple/Program.hs
@@ -92,7 +92,8 @@ import Distribution.Version
 import Distribution.Text
          ( simpleParse, display )
 import Distribution.Verbosity
-import System.Directory (doesFileExist, removeFile, findExecutable)
+import System.Directory (doesFileExist, removeFile, findExecutable,
+                         getTemporaryDirectory)
 import System.FilePath  (dropExtension)
 import System.IO (hClose)
 import System.IO.Error (try)
@@ -579,8 +580,9 @@ hsc2hsProgram = (simpleProgram "hsc2hs") {
       -- to see if it was indeed ghc or not.
       case maybeVersion of
         Nothing -> return Nothing
-	Just version ->
-          withTempFile "dist" ".hsc" $ \hsc hnd -> do
+	Just version -> do
+          tempDir <- getTemporaryDirectory
+          withTempFile tempDir ".hsc" $ \hsc hnd -> do
 	    hClose hnd
 	    (str, _) <- rawSystemStdout' verbosity path [hsc, "--cflag=--version"]
 	    try $ removeFile (dropExtension hsc ++ "_hsc_make.c")