diff --git a/src/mol-gl/compute/histogram-pyramid/reduction.ts b/src/mol-gl/compute/histogram-pyramid/reduction.ts
index 5a9fb03a16ea95b06a0fe3f8efd5852926269c35..2cdc5c6664c59fc7f6fd2aa5149d46d0e6920793 100644
--- a/src/mol-gl/compute/histogram-pyramid/reduction.ts
+++ b/src/mol-gl/compute/histogram-pyramid/reduction.ts
@@ -40,7 +40,7 @@ function getHistopyramidReductionRenderable(ctx: WebGLContext, initialTexture: T
 }
 
 /** name for shared framebuffer used for histogram-pyramid operations */
-const FramebufferName = 'histogram-pyramid'
+const FramebufferName = 'histogram-pyramid-reduction'
 
 function setRenderingDefaults(gl: GLRenderingContext) {
     gl.disable(gl.CULL_FACE)
@@ -66,7 +66,7 @@ export function createHistogramPyramid(ctx: WebGLContext, inputTexture: Texture)
 
     // This part set the levels
     const levels = Math.ceil(Math.log(inputTextureMaxDim) / Math.log(2))
-    console.log('levels', levels)
+    // console.log('levels', levels)
 
     const initialTexture = createTexture(ctx, 'image-float32', 'rgba', 'float', 'nearest')
     initialTexture.load({ array: new Float32Array(4), width: 1, height: 1 })
@@ -101,7 +101,7 @@ export function createHistogramPyramid(ctx: WebGLContext, inputTexture: Texture)
         levelTextures[currLevel].attachFramebuffer(framebuffer, 0)
 
         const size = Math.pow(2, currLevel)
-        console.log('size', size, 'draw-level', currLevel, 'read-level', levels - i)
+        // console.log('size', size, 'draw-level', currLevel, 'read-level', levels - i)
         gl.clear(gl.COLOR_BUFFER_BIT)
 
         ValueCell.update(renderable.values.uSize, Math.pow(2, i + 1) / initialTextureMaxDim)
@@ -140,7 +140,7 @@ export function createHistogramPyramid(ctx: WebGLContext, inputTexture: Texture)
 
     const finalCount = getHistopyramidSum(ctx, levelTextures[0])
     const height = Math.ceil(finalCount / Math.pow(2, levels))
-    console.log('height', height, 'finalCount', finalCount)
+    // console.log('height', height, 'finalCount', finalCount)
 
     //
 
diff --git a/src/mol-gl/compute/histogram-pyramid/sum.ts b/src/mol-gl/compute/histogram-pyramid/sum.ts
index 6f855a6230f51936b596b3b8f60245cad3b770c4..26a3ab45f93afc3e54ef40b993a052f7dd670bb0 100644
--- a/src/mol-gl/compute/histogram-pyramid/sum.ts
+++ b/src/mol-gl/compute/histogram-pyramid/sum.ts
@@ -12,7 +12,7 @@ import { Texture, createTexture } from 'mol-gl/webgl/texture';
 import { ShaderCode } from 'mol-gl/shader-code';
 import { ValueCell } from 'mol-util';
 import { decodeFloatRGB } from 'mol-util/float-packing';
-import { readTexture, QuadSchema, QuadValues } from '../util';
+import { QuadSchema, QuadValues } from '../util';
 
 const HistopyramidSumSchema = {
     ...QuadSchema,
@@ -36,25 +36,29 @@ function getHistopyramidSumRenderable(ctx: WebGLContext, texture: Texture) {
 }
 
 /** name for shared framebuffer used for histogram-pyramid operations */
-const FramebufferName = 'histogram-pyramid'
+const FramebufferName = 'histogram-pyramid-sum'
 
+const sumArray = new Uint8Array(4)
 export function getHistopyramidSum(ctx: WebGLContext, pyramidTopTexture: Texture) {
     const { gl, framebufferCache } = ctx
 
     const framebuffer = framebufferCache.get(FramebufferName).value
+    framebuffer.bind()
+    gl.viewport(0, 0, 1, 1)
 
-    const encodeFloatRenderable = getHistopyramidSumRenderable(ctx, pyramidTopTexture)
-    encodeFloatRenderable.update()
-    encodeFloatRenderable.use()
+    const renderable = getHistopyramidSumRenderable(ctx, pyramidTopTexture)
+    renderable.update()
+    renderable.use()
 
     // TODO cache globally for reuse
-    const encodedFloatTexture = createTexture(ctx, 'image-uint8', 'rgba', 'ubyte', 'nearest')
-    encodedFloatTexture.define(1, 1)
-    encodedFloatTexture.attachFramebuffer(framebuffer, 0)
+    const sumTexture = createTexture(ctx, 'image-uint8', 'rgba', 'ubyte', 'nearest')
+    sumTexture.define(1, 1)
+    sumTexture.attachFramebuffer(framebuffer, 0)
 
-    gl.viewport(0, 0, 1, 1)
-    encodeFloatRenderable.render()
+    renderable.render()
+    ctx.readPixels(0, 0, 1, 1, sumArray)
+
+    ctx.unbindFramebuffer()
 
-    const sumImage = readTexture(ctx, encodedFloatTexture)
-    return decodeFloatRGB(sumImage.array[0], sumImage.array[1], sumImage.array[2])
+    return decodeFloatRGB(sumArray[0], sumArray[1], sumArray[2])
 }
\ No newline at end of file
diff --git a/src/mol-gl/compute/marching-cubes/active-voxels.ts b/src/mol-gl/compute/marching-cubes/active-voxels.ts
index bdb0302bb818cd1c48d95d753feaf7886fdd11db..ffd9b6fbb18dd185d0ea7ee60e83ebf789f7d20c 100644
--- a/src/mol-gl/compute/marching-cubes/active-voxels.ts
+++ b/src/mol-gl/compute/marching-cubes/active-voxels.ts
@@ -17,7 +17,7 @@ import { QuadSchema, QuadValues } from '../util';
 import { getTriCount } from './tables';
 
 /** name for shared framebuffer used for gpu marching cubes operations */
-const FramebufferName = 'marching-cubes'
+const FramebufferName = 'marching-cubes-active-voxels'
 
 const ActiveVoxelsSchema = {
     ...QuadSchema,
diff --git a/src/mol-gl/compute/marching-cubes/isosurface.ts b/src/mol-gl/compute/marching-cubes/isosurface.ts
index 8f33104972f4e9374dffc153f1601cd4116cc797..a893c158fc1840907e4df779b872e59b00d4ba94 100644
--- a/src/mol-gl/compute/marching-cubes/isosurface.ts
+++ b/src/mol-gl/compute/marching-cubes/isosurface.ts
@@ -18,7 +18,7 @@ import { HistogramPyramid } from '../histogram-pyramid/reduction';
 import { getTriIndices } from './tables';
 
 /** name for shared framebuffer used for gpu marching cubes operations */
-const FramebufferName = 'marching-cubes'
+const FramebufferName = 'marching-cubes-isosurface'
 
 const IsosurfaceSchema = {
     ...QuadSchema,