diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,11 @@
 # Changelog
 
+- 0.5.7 (2026-06-07)
+  * Improves the performance of all wNAF-based signing & verification
+    functions by about 1.5-2x, due to optimizations in 1) the
+    constant-time wNAF scalar multiplication function, and 2) upstream
+    modular field inversion (in ppad-fixed).
+
 - 0.5.6 (2026-06-07)
   * Improves the wall-clock performance of the constant-time, non-wNAF
     scalar multiplication function by about 35%. ECDH also speeds up
diff --git a/lib/Crypto/Curve/Secp256k1.hs b/lib/Crypto/Curve/Secp256k1.hs
--- a/lib/Crypto/Curve/Secp256k1.hs
+++ b/lib/Crypto/Curve/Secp256k1.hs
@@ -612,8 +612,7 @@
     | CT.decide (CT.not (ge# ls)) = (# () | #)
     | otherwise =
         let !(P zx zy zz) = _CURVE_ZERO
-            !(P gx gy gz) = _CURVE_G
-        in  (# | loop 0 (# zx, zy, zz #) (# gx, gy, gz #) ls #)
+        in  (# | loop 0 (# zx, zy, zz #) ls #)
   where
     !one                  = (# Limb 1##, Limb 0##, Limb 0##, Limb 0## #)
     !wins                 = fi (256 `quot` ctxW + 1)
@@ -622,7 +621,7 @@
     !(GHC.Word.W# texW)   = fi ctxW
     !(GHC.Word.W# mnum)   = 1 .<<. ctxW
 
-    loop !j@(GHC.Word.W# w) !acc !f !n@(# Limb lo, _, _, _ #)
+    loop !j !acc !n@(# Limb lo, _, _, _ #)
       | j == wins = acc
       | otherwise =
           let !(GHC.Word.W# off0) = j * size
@@ -635,20 +634,16 @@
 
               !abs_b       = CT.select_word# b0 (Exts.minusWord# mnum b0) bor
               !is_zero     = CT.from_word_eq# b0 0##
-              !c0          = CT.from_bit# (Exts.and# w 1##)
               !off_nz      = Exts.minusWord# (Exts.plusWord# off0 abs_b) 1##
               !off         = CT.select_word# off0 off_nz (CT.not is_zero)
 
               !pr          = ct_index_proj# ctxArray off0 s off
               !neg_pr      = neg# pr
-              !pt_zero     = select_proj# pr neg_pr c0
               !pt_nonzero  = select_proj# pr neg_pr bor
 
-              !f_added     = add_proj# f pt_zero
               !acc_added   = add_proj# acc pt_nonzero
               !nacc        = select_proj# acc_added acc is_zero
-              !nf          = select_proj# f f_added is_zero
-          in  loop (succ j) nacc nf n1
+          in  loop (succ j) nacc n1
 {-# INLINE mul_wnaf# #-}
 
 -- retrieve a point (as an unboxed tuple) from a context array
diff --git a/ppad-secp256k1.cabal b/ppad-secp256k1.cabal
--- a/ppad-secp256k1.cabal
+++ b/ppad-secp256k1.cabal
@@ -1,6 +1,6 @@
 cabal-version:      3.0
 name:               ppad-secp256k1
-version:            0.5.6
+version:            0.5.7
 synopsis:           Schnorr signatures, ECDSA, and ECDH on the elliptic curve
                     secp256k1
 license:            MIT
@@ -38,7 +38,7 @@
     , bytestring >= 0.9 && < 0.13
     , ppad-hmac-drbg >= 0.3.1 && < 0.4
     , ppad-sha256 >= 0.3.2 && < 0.4
-    , ppad-fixed >= 0.1.4 && < 0.2
+    , ppad-fixed >= 0.1.5 && < 0.2
     , primitive >= 0.8 && < 0.10
 
 test-suite secp256k1-tests
