diff --git a/include/rive/runtime_header.hpp b/include/rive/runtime_header.hpp
index 636befc..ad36e16 100644
--- a/include/rive/runtime_header.hpp
+++ b/include/rive/runtime_header.hpp
@@ -48,24 +48,24 @@
                 }
             }
 
-            header.m_MajorVersion = (int)reader.readVarUint64();
+            header.m_MajorVersion = reader.readVarUintAs<int>();
             if (reader.didOverflow()) {
                 return false;
             }
-            header.m_MinorVersion = (int)reader.readVarUint64();
+            header.m_MinorVersion = reader.readVarUintAs<int>();
             if (reader.didOverflow()) {
                 return false;
             }
 
-            header.m_FileId = (int)reader.readVarUint64();
+            header.m_FileId = reader.readVarUintAs<int>();
 
             if (reader.didOverflow()) {
                 return false;
             }
 
             std::vector<int> propertyKeys;
-            for (int propertyKey = (int)reader.readVarUint64(); propertyKey != 0;
-                 propertyKey = (int)reader.readVarUint64())
+            for (int propertyKey = reader.readVarUintAs<int>(); propertyKey != 0;
+                 propertyKey = reader.readVarUintAs<int>())
             {
                 propertyKeys.push_back(propertyKey);
                 if (reader.didOverflow()) {
diff --git a/src/core/field_types/core_uint_type.cpp b/src/core/field_types/core_uint_type.cpp
index d0d1242..15b19c0 100644
--- a/src/core/field_types/core_uint_type.cpp
+++ b/src/core/field_types/core_uint_type.cpp
@@ -3,4 +3,6 @@
 
 using namespace rive;
 
-unsigned int CoreUintType::deserialize(BinaryReader& reader) { return (int)reader.readVarUint64(); }
+unsigned int CoreUintType::deserialize(BinaryReader& reader) {
+    return reader.readVarUintAs<unsigned int>();
+}
diff --git a/src/file.cpp b/src/file.cpp
index 4c7314d..3f1bdb8 100644
--- a/src/file.cpp
+++ b/src/file.cpp
@@ -244,8 +244,8 @@
         }
     }
 
-    return importStack.resolve() == StatusCode::Ok ? ImportResult::success
-                                                   : ImportResult::malformed;
+    return !reader.hasError() && importStack.resolve() == StatusCode::Ok
+        ? ImportResult::success : ImportResult::malformed;
 }
 
 Artboard* File::artboard(std::string name) const {
