diff --git a/libraries/gpu-gl/src/gpu/gl/GLTexture.cpp b/libraries/gpu-gl/src/gpu/gl/GLTexture.cpp
index 342b2611d5..818d95d756 100644
--- a/libraries/gpu-gl/src/gpu/gl/GLTexture.cpp
+++ b/libraries/gpu-gl/src/gpu/gl/GLTexture.cpp
@@ -243,15 +243,8 @@ bool GLTexture::isReady() const {
         return false;
     }
 
-    // If we're out of date, but the transfer is in progress, report ready
-    // as a special case
     auto syncState = _syncState.load();
-
-    if (isOutdated()) {
-        return Idle != syncState;
-    }
-
-    if (Idle != syncState) {
+    if (isOutdated() || Idle != syncState) {
         return false;
     }
 
diff --git a/libraries/gpu-gl/src/gpu/gl/GLTexture.h b/libraries/gpu-gl/src/gpu/gl/GLTexture.h
index 6ac83d7116..d050afbb59 100644
--- a/libraries/gpu-gl/src/gpu/gl/GLTexture.h
+++ b/libraries/gpu-gl/src/gpu/gl/GLTexture.h
@@ -21,6 +21,9 @@ struct GLFilterMode {
 
 class GLTexture : public GLObject<Texture> {
 public:
+    static const uint16_t INVALID_MIP { (uint16_t)-1 };
+    static const uint8_t INVALID_FACE { (uint8_t)-1 };
+
     static void initTextureTransferHelper();
     static std::shared_ptr<GLTextureTransferHelper> _textureTransferHelper;
 
@@ -58,18 +61,24 @@ public:
             return object;
         }
 
-        if (object->isReady()) {
-            // Do we need to reduce texture memory usage?
-            if (object->isOverMaxMemory() && texturePointer->incremementMinMip()) {
-                // WARNING, this code path will essentially `delete this`, 
-                // so no dereferencing of this instance should be done past this point
-                object = new GLTextureType(backend.shared_from_this(), texture, object);
-                _textureTransferHelper->transferTexture(texturePointer);
-            }
-        } else if (object->isOutdated()) {
+        if (object->isOutdated()) {
             // Object might be outdated, if so, start the transfer
             // (outdated objects that are already in transfer will have reported 'true' for ready()
             _textureTransferHelper->transferTexture(texturePointer);
+            return nullptr;
+        }
+
+        if (!object->isReady()) {
+            return nullptr;
+        }
+
+        // Do we need to reduce texture memory usage?
+        if (object->isOverMaxMemory() && texturePointer->incremementMinMip()) {
+            // WARNING, this code path will essentially `delete this`, 
+            // so no dereferencing of this instance should be done past this point
+            object = new GLTextureType(backend.shared_from_this(), texture, object);
+            _textureTransferHelper->transferTexture(texturePointer);
+            return nullptr;
         }
 
         return object;