diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # xmonad-volume
 
+## 0.1.1.0
+
+  * Work with `alsa-mixer == 0.3`
+
 ## 0.1.0.1
 
   * Generalize type signatures
diff --git a/src/XMonad/Util/ALSA.hs b/src/XMonad/Util/ALSA.hs
--- a/src/XMonad/Util/ALSA.hs
+++ b/src/XMonad/Util/ALSA.hs
@@ -1,5 +1,4 @@
 {-# OPTIONS_GHC -fno-warn-incomplete-uni-patterns #-}
-{-# LANGUAGE TupleSections #-}
 
 -- | This uses ALSA to control the volume.
 module XMonad.Util.ALSA ( toggleMute
@@ -9,7 +8,6 @@
                         , volumeKeys
                         ) where
 
-import           Control.Arrow                (first)
 import           Control.Composition
 import           Control.Monad
 import           Control.Monad.IO.Class
@@ -23,31 +21,32 @@
 toggleMute = liftIO $
     withMixer "default" $ \mixer -> do
         Just control <- getControlByName mixer "Master"
-        let Just playbackSwitch = playback $ switch control
+        let Just playbackSwitch = playback (switch control)
         Just sw <- getChannel FrontLeft playbackSwitch
         setChannel FrontLeft playbackSwitch $ not sw
 
+-- TODO: upstream replacement of 'Integer'?
 changeVolume :: MonadIO m
              => Channel
-             -> Integer -- ^ Percentage
+             -> Int -- ^ Percentage
              -> m ()
 changeVolume channel i = liftIO $
     withMixer "default" $ \mixer -> do
         Just control <- getControlByName mixer "Master"
         let Just playbackVolume = playback $ volume control
-        (min', max') <- getRange playbackVolume
-        Just vol <- getChannel channel $ value playbackVolume
+        (min', max') <- both fromIntegral <$> getRange playbackVolume
+        Just vol <- fmap fromIntegral <$> getChannel channel (value playbackVolume)
         let i' = i * ((max' - min') `div` 100)
         when ((i' > 0 && vol < max') || (i' < 0 && vol > min')) $
-            setChannel channel (value playbackVolume) $ vol + i'
+            setChannel channel (value playbackVolume) $ fromIntegral (vol + i')
 
 -- | Raise volume
-raiseVolume :: MonadIO m => Integer -> m ()
+raiseVolume :: MonadIO m => Int -> m ()
 raiseVolume = axe [ changeVolume FrontLeft, changeVolume FrontRight ]
 
 -- | Lower volume
-lowerVolume :: MonadIO m => Integer -> m ()
-lowerVolume = axe [ changeVolume FrontLeft, changeVolume FrontRight ] . negate
+lowerVolume :: MonadIO m => Int -> m ()
+lowerVolume = raiseVolume . negate
 
 -- | Given your keymaps, add volume control keybindings.
 volumeKeys :: MonadIO m => M.Map (KeyMask, KeySym) (m ()) -> M.Map (KeyMask, KeySym) (m ())
@@ -55,8 +54,7 @@
     where mediaKeyMap = M.fromList volumeKeyList
 
 volumeKeyList :: MonadIO m => [((KeyMask, KeySym), m ())]
-volumeKeyList = go <$> [ (xF86XK_AudioMute, toggleMute)
-                       , (xF86XK_AudioLowerVolume, lowerVolume 5)
-                       , (xF86XK_AudioRaiseVolume, raiseVolume 5)
-                       ]
-    where go = first (0 ,)
+volumeKeyList = [ ((0, xF86XK_AudioMute), toggleMute)
+                , ((0, xF86XK_AudioLowerVolume), lowerVolume 5)
+                , ((0, xF86XK_AudioRaiseVolume), raiseVolume 5)
+                ]
diff --git a/xmonad-volume.cabal b/xmonad-volume.cabal
--- a/xmonad-volume.cabal
+++ b/xmonad-volume.cabal
@@ -1,6 +1,6 @@
 cabal-version: 1.18
 name: xmonad-volume
-version: 0.1.0.1
+version: 0.1.1.0
 license: BSD3
 license-file: LICENSE
 copyright: Copyright: (c) 2018 Vanessa McHale
@@ -36,21 +36,21 @@
     ghc-options: -Wall
     build-depends:
         base >=4.8 && <5,
-        alsa-mixer -any,
+        alsa-mixer >=0.3,
         X11 -any,
         containers -any,
-        composition-prelude -any
-    
+        composition-prelude >=1.3.0.0
+
     if flag(development)
         ghc-options: -Werror
-    
+
     if !impl(ghc >=8.0)
         build-depends:
             transformers -any
-    
+
     if impl(ghc >=8.0)
         ghc-options: -Wincomplete-uni-patterns -Wincomplete-record-updates
                      -Wredundant-constraints -Widentities
-    
+
     if impl(ghc >=8.4)
         ghc-options: -Wmissing-export-lists
