diff --git a/base16.cabal b/base16.cabal
--- a/base16.cabal
+++ b/base16.cabal
@@ -1,6 +1,6 @@
 cabal-version:   2.0
 name:            base16
-version:         0.3.0.2
+version:         0.3.1.0
 synopsis:        Fast RFC 4648-compliant Base16 encoding
 description:
   RFC 4648-compliant Base16 encodings and decodings.
@@ -19,7 +19,13 @@
   CHANGELOG.md
   README.md
 
-tested-with:     GHC ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.7 || ==9.0.1
+tested-with:
+  GHC ==8.4.4
+   || ==8.6.5
+   || ==8.8.4
+   || ==8.10.7
+   || ==9.0.1
+   || ==9.2.1
 
 source-repository head
   type:     git
@@ -42,7 +48,7 @@
     Data.ByteString.Base16.Internal.W16.ShortLoop
 
   build-depends:
-      base        >=4.10 && <5
+      base        >=4.10 && <4.17
     , bytestring  >=0.10 && <0.12
     , deepseq     ^>=1.4
     , primitive   >=0.6  && <0.8
@@ -60,7 +66,7 @@
   hs-source-dirs:   test
   main-is:          Main.hs
   build-depends:
-      base               >=4.11 && <5
+      base               >=4.11 && <4.17
     , base16
     , base16-bytestring  >=1.0
     , bytestring
@@ -78,7 +84,7 @@
   hs-source-dirs:   benchmarks
   main-is:          Base16Bench.hs
   build-depends:
-      base               >=4.11 && <5
+      base               >=4.11 && <4.17
     , base16
     , base16-bytestring  >=1.0
     , bytestring
diff --git a/src/Data/ByteString/Base16/Internal/Utils.hs b/src/Data/ByteString/Base16/Internal/Utils.hs
--- a/src/Data/ByteString/Base16/Internal/Utils.hs
+++ b/src/Data/ByteString/Base16/Internal/Utils.hs
@@ -24,7 +24,9 @@
 -- | Read 'Word8' index off alphabet addr
 --
 aix :: Word8 -> Addr# -> Word8
-aix (W8# i) alpha = W8# (indexWord8OffAddr# alpha (word2Int# i))
+aix w alpha = W8# (indexWord8OffAddr# alpha i)
+  where
+    !(I# i) = fromIntegral w
 {-# INLINE aix #-}
 
 -- | Form a list of chunks, and rechunk the list of bytestrings
