diff --git a/src/mol-canvas3d/canvas3d.ts b/src/mol-canvas3d/canvas3d.ts
index 8e2016f1201826b191aa685b34b060bfb12666f4..e815b7f3f907e939b830fd8361a8974a049eaf00 100644
--- a/src/mol-canvas3d/canvas3d.ts
+++ b/src/mol-canvas3d/canvas3d.ts
@@ -295,7 +295,6 @@ namespace Canvas3D {
             if (oldRO) {
                 SetUtils.difference(newRO, oldRO).forEach(o => scene.add(o))
                 SetUtils.difference(oldRO, newRO).forEach(o => scene.remove(o))
-                scene.update()
             } else {
                 repr.renderObjects.forEach(o => scene.add(o))
             }
diff --git a/src/mol-gl/scene.ts b/src/mol-gl/scene.ts
index 575bc56cb4480d4accc860212aca9d04cca9b57f..f64bc162fefd7ec95c7370451aa4094f9534f8d6 100644
--- a/src/mol-gl/scene.ts
+++ b/src/mol-gl/scene.ts
@@ -38,12 +38,12 @@ function calculateBoundingSphere(renderableMap: Map<RenderObject, Renderable<Ren
     boundaryHelper.reset(0.1);
 
     renderableMap.forEach(r => {
-        if (!r.state.visible || !r.boundingSphere.radius) return;
+        if (!r.boundingSphere.radius) return;
         boundaryHelper.boundaryStep(r.boundingSphere.center, r.boundingSphere.radius);
     });
     boundaryHelper.finishBoundaryStep();
     renderableMap.forEach(r => {
-        if (!r.state.visible || !r.boundingSphere.radius) return;
+        if (!r.boundingSphere.radius) return;
         boundaryHelper.extendStep(r.boundingSphere.center, r.boundingSphere.radius);
     });
 
diff --git a/src/mol-repr/structure/units-visual.ts b/src/mol-repr/structure/units-visual.ts
index 87e06e3fc2c08ae18d72f3a08d10a970cd5d7d0b..d915e952184e32d04aeafdc976de840570a9e04c 100644
--- a/src/mol-repr/structure/units-visual.ts
+++ b/src/mol-repr/structure/units-visual.ts
@@ -161,12 +161,15 @@ export function UnitsVisual<P extends UnitsParams>(builder: UnitsVisualGeometryB
                 // console.log('update geometry')
                 if (newGeometry) {
                     ValueCell.update(renderObject.values.drawCount, Geometry.getDrawCount(newGeometry))
-                    updateBoundingSphere(renderObject.values, newGeometry)
                 } else {
                     throw new Error('expected geometry to be given')
                 }
             }
 
+            if (updateState.updateTransform || updateState.createGeometry) {
+                updateBoundingSphere(renderObject.values, newGeometry || geometry)
+            }
+
             if (updateState.updateSize) {
                 // not all geometries have size data, so check here
                 if ('uSize' in renderObject.values) {