diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+## Wave 0.1.2
+
+* Switched to using `withBinaryFile` instead of `withFile`, because the
+  latter does nasty conversions on Windows, see docs for `openBinaryFile`.
+
 ## Wave 0.1.1
 
 * Added `*.rf64` audio samples to the distribution to allow the tests pass.
diff --git a/Codec/Audio/Wave.hs b/Codec/Audio/Wave.hs
--- a/Codec/Audio/Wave.hs
+++ b/Codec/Audio/Wave.hs
@@ -376,7 +376,7 @@
 readWaveFile :: MonadIO m
   => FilePath          -- ^ Location of file to read
   -> m Wave
-readWaveFile path = liftIO . withFile path ReadMode $ \h -> do
+readWaveFile path = liftIO . withBinaryFile path ReadMode $ \h -> do
   let giveup f = throwIO (f path)
       liftGet m = do
         r <- m
@@ -584,7 +584,7 @@
   -> Wave              -- ^ Parameters of the WAVE file
   -> (Handle -> IO ()) -- ^ Callback that will be used to write WAVE data
   -> m ()
-writeWaveFile path wave writeData = liftIO . withFile path WriteMode $ \h ->
+writeWaveFile path wave writeData = liftIO . withBinaryFile path WriteMode $ \h ->
   case waveFileFormat wave of
     WaveVanilla -> writeWaveVanilla h wave writeData
     WaveRF64    -> writeWaveRF64    h wave writeData
diff --git a/wave.cabal b/wave.cabal
--- a/wave.cabal
+++ b/wave.cabal
@@ -31,7 +31,7 @@
 -- POSSIBILITY OF SUCH DAMAGE.
 
 name:                 wave
-version:              0.1.1
+version:              0.1.2
 cabal-version:        >= 1.10
 license:              BSD3
 license-file:         LICENSE.md
@@ -83,7 +83,7 @@
                     , data-default-class
                     , hspec            >= 2.0    && < 3.0
                     , temporary        >= 1.1    && < 1.3
-                    , wave             >= 0.1.1
+                    , wave             >= 0.1.2
   if flag(dev)
     ghc-options:      -Wall -Werror
   else
