diff --git a/fuzzers/tint_spirv_tools_fuzzer/cli.cc b/fuzzers/tint_spirv_tools_fuzzer/cli.cc
index f304ed7..b942421 100644
--- a/fuzzers/tint_spirv_tools_fuzzer/cli.cc
+++ b/fuzzers/tint_spirv_tools_fuzzer/cli.cc
@@ -191,8 +191,8 @@
 }
 
 bool ParseUint32(const char* param, uint32_t* out) {
-  auto value = strtoul(param, nullptr, 10);
-  if (value > std::numeric_limits<uint32_t>::max()) {
+  uint64_t value = static_cast<uint64_t>(strtoul(param, nullptr, 10));
+  if (value > static_cast<uint64_t>(std::numeric_limits<uint32_t>::max())) {
     return false;
   }
   *out = static_cast<uint32_t>(value);
diff --git a/fuzzers/tint_spirv_tools_fuzzer/fuzzer.cc b/fuzzers/tint_spirv_tools_fuzzer/fuzzer.cc
index 18c072a..4d3b8aa 100644
--- a/fuzzers/tint_spirv_tools_fuzzer/fuzzer.cc
+++ b/fuzzers/tint_spirv_tools_fuzzer/fuzzer.cc
@@ -70,7 +70,8 @@
 
   assert(!types.empty() && "At least one mutator type must be specified");
   RandomGenerator generator(seed);
-  auto mutator_type = types[generator.GetUInt64(types.size())];
+  auto mutator_type =
+      types[generator.GetUInt32(static_cast<uint32_t>(types.size()))];
 
   const auto& mutator_params = context->params.mutator_params;
   switch (mutator_type) {
diff --git a/fuzzers/tint_spirv_tools_fuzzer/spirv_opt_mutator.cc b/fuzzers/tint_spirv_tools_fuzzer/spirv_opt_mutator.cc
index 0b75ed3..d52d8ef 100644
--- a/fuzzers/tint_spirv_tools_fuzzer/spirv_opt_mutator.cc
+++ b/fuzzers/tint_spirv_tools_fuzzer/spirv_opt_mutator.cc
@@ -105,7 +105,8 @@
     std::vector<std::string> passes;
 
     while (passes.size() < num_of_passes) {
-      auto idx = generator_.GetUInt64(opt_passes_.size());
+      auto idx =
+          generator_.GetUInt32(static_cast<uint32_t>(opt_passes_.size()));
       passes.push_back(opt_passes_[idx]);
     }
 
diff --git a/fuzzers/tint_spirv_tools_fuzzer/spirv_reduce_mutator.h b/fuzzers/tint_spirv_tools_fuzzer/spirv_reduce_mutator.h
index 2f25146..df5cf9b 100644
--- a/fuzzers/tint_spirv_tools_fuzzer/spirv_reduce_mutator.h
+++ b/fuzzers/tint_spirv_tools_fuzzer/spirv_reduce_mutator.h
@@ -73,14 +73,14 @@
   template <typename T>
   T* GetRandomElement(std::vector<T>* arr) {
     assert(!arr->empty() && "Can't get random element from an empty vector");
-    auto index = generator_.GetUInt64(arr->size());
+    auto index = generator_.GetUInt32(static_cast<uint32_t>(arr->size()));
     return &(*arr)[index];
   }
 
   template <typename T>
   T* GetRandomElement(std::vector<std::unique_ptr<T>>* arr) {
     assert(!arr->empty() && "Can't get random element from an empty vector");
-    auto index = generator_.GetUInt64(arr->size());
+    auto index = generator_.GetUInt32(static_cast<uint32_t>(arr->size()));
     return (*arr)[index].get();
   }
 
diff --git a/fuzzers/tint_spirv_tools_fuzzer/util.cc b/fuzzers/tint_spirv_tools_fuzzer/util.cc
index bd574a2..d25bfde 100644
--- a/fuzzers/tint_spirv_tools_fuzzer/util.cc
+++ b/fuzzers/tint_spirv_tools_fuzzer/util.cc
@@ -129,7 +129,7 @@
     return false;
   }
 
-  auto size = file.tellg();
+  size_t size = static_cast<size_t>(file.tellg());
   if (!file) {
     return false;
   }
@@ -139,7 +139,7 @@
     return false;
   }
 
-  std::vector<char> binary(static_cast<size_t>(size));
+  std::vector<char> binary(size);
   if (!file.read(binary.data(), size)) {
     return false;
   }
