diff --git a/common/image-sparse.c b/common/image-sparse.c
index dffe844d548a81d9751991f53ba2da77f8142571..2433192b20ef019198483e03f14866dc6340f2d3 100644
--- a/common/image-sparse.c
+++ b/common/image-sparse.c
@@ -64,7 +64,8 @@ static unsigned int sparse_block_size_to_storage(unsigned int size,
 						 sparse_storage_t *storage,
 						 sparse_header_t *sparse)
 {
-	return size * sparse->blk_sz / storage->block_sz;
+	return (unsigned int)lldiv((uint64_t)size * sparse->blk_sz,
+				   storage->block_sz);
 }
 
 static bool sparse_chunk_has_buffer(chunk_header_t *chunk)