diff --git a/libraries/networking/src/ResourceCache.cpp b/libraries/networking/src/ResourceCache.cpp
index 4ba456d859..54297415c0 100644
--- a/libraries/networking/src/ResourceCache.cpp
+++ b/libraries/networking/src/ResourceCache.cpp
@@ -794,8 +794,6 @@ void Resource::handleReplyFinished() {
         { "size_mb", _bytesTotal / 1000000.0 }
     });
 
-    setSize(_bytesTotal);
-
     // Make sure we keep the Resource alive here
     auto self = _self.lock();
     ResourceCache::requestCompleted(_self);
@@ -809,6 +807,14 @@ void Resource::handleReplyFinished() {
         }
 
         auto data = _request->getData();
+        if (_request->getUrl().scheme() == "qrc") {
+            // For resources under qrc://, there's no actual download being done, so
+            // handleDownloadProgress never gets called. We get the full length here
+            // at the end.
+            _bytesTotal = data.length();
+        }
+
+        setSize(_bytesTotal);
         emit loaded(data);
         downloadFinished(data);
     } else {