diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp
index 1ecbcb0c8b..8671b3da7e 100644
--- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp
+++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp
@@ -256,18 +256,28 @@ void EntityTreeRenderer::clear() {
     }
 
     // reset the engine
-    if (_wantScripts && !_shuttingDown) {
-        resetEntitiesScriptEngine();
-    }
-    // remove all entities from the scene
     auto scene = _viewState->getMain3DScene();
-    if (scene) {
-        for (const auto& entry :  _entitiesInScene) {
-            const auto& renderer = entry.second;
-            fadeOutRenderable(renderer);
+    if (_shuttingDown) {
+        if (scene) {
+            render::Transaction transaction;
+            for (const auto& entry :  _entitiesInScene) {
+                const auto& renderer = entry.second;
+                renderer->removeFromScene(scene, transaction);
+            }
+            scene->enqueueTransaction(transaction);
         }
     } else {
-        qCWarning(entitiesrenderer) << "EntitityTreeRenderer::clear(), Unexpected null scene, possibly during application shutdown";
+        if (_wantScripts) {
+            resetEntitiesScriptEngine();
+        }
+        if (scene) {
+            for (const auto& entry :  _entitiesInScene) {
+                const auto& renderer = entry.second;
+                fadeOutRenderable(renderer);
+            }
+        } else {
+            qCWarning(entitiesrenderer) << "EntitityTreeRenderer::clear(), Unexpected null scene";
+        }
     }
     _entitiesInScene.clear();
     _renderablesToUpdate.clear();
diff --git a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp
index 3b615ba467..bb3e99157e 100644
--- a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp
+++ b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp
@@ -7,6 +7,7 @@
 //
 
 #include "RenderableWebEntityItem.h"
+#include <atomic>
 
 #include <QtCore/QTimer>
 #include <QtGui/QOpenGLContext>
@@ -46,7 +47,7 @@ static uint64_t MAX_NO_RENDER_INTERVAL = 30 * USECS_PER_SECOND;
 static uint8_t YOUTUBE_MAX_FPS = 30;
 
 // Don't allow more than 20 concurrent web views
-static uint32_t _currentWebCount { 0 };
+static std::atomic<uint32_t> _currentWebCount(0);
 static const uint32_t MAX_CONCURRENT_WEB_VIEWS = 20;
 
 static QTouchDevice _touchDevice;
@@ -356,16 +357,15 @@ void WebEntityRenderer::buildWebSurface(const EntityItemPointer& entity, const Q
 
 void WebEntityRenderer::destroyWebSurface() {
     QSharedPointer<OffscreenQmlSurface> webSurface;
-    ContentType contentType = ContentType::NoContent;
     withWriteLock([&] {
         webSurface.swap(_webSurface);
-        _contentType = contentType;
-    });
+        _contentType = ContentType::NoContent;
 
-    if (webSurface) {
-        --_currentWebCount;
-        WebEntityRenderer::releaseWebSurface(webSurface, _cachedWebSurface, _connections);
-    }
+        if (webSurface) {
+            --_currentWebCount;
+            WebEntityRenderer::releaseWebSurface(webSurface, _cachedWebSurface, _connections);
+        }
+    });
 }
 
 glm::vec2 WebEntityRenderer::getWindowSize(const TypedEntityPointer& entity) const {