diff --git a/src/cuckoocache.h b/src/cuckoocache.h
--- a/src/cuckoocache.h
+++ b/src/cuckoocache.h
@@ -90,7 +90,7 @@
      * ordering) to bit_is_set(s) == true.
      */
     inline void bit_set(uint32_t s) {
-        mem[s >> 3].fetch_or(1 << (s & 7), std::memory_order_relaxed);
+        mem[s >> 3].fetch_or(uint8_t(1 << (s & 7)), std::memory_order_relaxed);
     }
 
     /**
@@ -101,7 +101,8 @@
      * ordering) to bit_is_set(s) == false.
      */
     inline void bit_unset(uint32_t s) {
-        mem[s >> 3].fetch_and(~(1 << (s & 7)), std::memory_order_relaxed);
+        mem[s >> 3].fetch_and(uint8_t(~(1 << (s & 7))),
+                              std::memory_order_relaxed);
     }
 
     /**
diff --git a/test/sanitizer_suppressions/ubsan b/test/sanitizer_suppressions/ubsan
--- a/test/sanitizer_suppressions/ubsan
+++ b/test/sanitizer_suppressions/ubsan
@@ -68,7 +68,6 @@
 implicit-signed-integer-truncation,implicit-integer-sign-change:test/skiplist_tests.cpp
 implicit-signed-integer-truncation:chain.h
 implicit-signed-integer-truncation:crypto/*
-implicit-signed-integer-truncation:cuckoocache.h
 implicit-signed-integer-truncation:leveldb/*
 implicit-signed-integer-truncation:streams.h
 implicit-signed-integer-truncation:test/arith_uint256_tests.cpp