diff --git a/sys/net/gnrc/network_layer/ipv6/nib/_nib-arsm.c b/sys/net/gnrc/network_layer/ipv6/nib/_nib-arsm.c
index 99f69f4e99ead0c684f587a8178e1d33c510f5c2..e14a6fd030e5a9134bf43fcefa34e2053938e9fa 100644
--- a/sys/net/gnrc/network_layer/ipv6/nib/_nib-arsm.c
+++ b/sys/net/gnrc/network_layer/ipv6/nib/_nib-arsm.c
@@ -519,7 +519,8 @@ static inline uint32_t _exp_backoff_retrans_timer(uint8_t ns_sent,
 
     /* backoff according to  https://tools.ietf.org/html/rfc7048 with
      * BACKOFF_MULTIPLE == 2 */
-    tmp = ((1 << ns_sent) * retrans_timer * tmp) / US_PER_MS;
+    tmp = (uint32_t)(((uint64_t)(((uint32_t) 1) << ns_sent) * retrans_timer *
+                     tmp) / US_PER_MS);
     /* random factors were statically multiplied with 1000 ^ */
     if (tmp > NDP_MAX_RETRANS_TIMER_MS) {
         tmp = NDP_MAX_RETRANS_TIMER_MS;