diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 71d3eb6f2cfe280dcdb84045d4dc91639eba845f..78e68df9c9d3049331a94c0e103d83bb601d4d9f 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -857,7 +857,10 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
 
 		if (!mPostMap.allocate(resX, resY, GL_RGBA)) return false;
 		if (!mPostFXMap.allocate(resX, resY, GL_RGBA)) return false;
-		if (RenderDepthOfField || samples > 0)
+//		if (RenderDepthOfField || samples > 0)
+// [RLVa:KB] - @setsphere
+		if (RenderDepthOfField || samples > 0 || RlvActions::hasPostProcess())
+// [/RLVa:KB]
 		{ //only need mPostHelperMap for dof OR fxaa
 			if (!mPostHelperMap.allocate(resX, resY, GL_RGBA)) return false;
 		}
@@ -7650,7 +7653,17 @@ void LLPipeline::renderFinalize()
 
     combineGlow(&mPostMap, &mPostFXMap);
 
-	renderDoF(&mPostFXMap, &mPostMap);
+	// [RLVa:KB] - @setsphere
+	LLRenderTarget* pRenderBuffer = &mPostFXMap;
+	if (RlvActions::hasBehaviour(RLV_BHVR_SETSPHERE))
+	{
+		LLShaderEffectParams params(pRenderBuffer, &mPostHelperMap, false);
+		LLVfxManager::instance().runEffect(EVisualEffect::RlvSphere, &params);
+		pRenderBuffer = params.m_pDstBuffer;
+	}
+// [/RLVa:KB]
+
+	renderDoF(pRenderBuffer, &mPostMap);
 
 	gGLViewport[0] = gViewerWindow->getWorldViewRectRaw().mLeft;
 	gGLViewport[1] = gViewerWindow->getWorldViewRectRaw().mBottom;
diff --git a/indra/newview/rlvhandler.cpp b/indra/newview/rlvhandler.cpp
index 3358c68b22b601d481a92f0666f2939cc91e96d6..1c6b6eff329cb1f1e6f3566ca990d59ebda71b6d 100644
--- a/indra/newview/rlvhandler.cpp
+++ b/indra/newview/rlvhandler.cpp
@@ -2139,6 +2139,13 @@ ERlvCmdRet RlvBehaviourHandler<RLV_BHVR_SETSPHERE>::onCommand(const RlvCommand&
 		if (gRlvHandler.hasBehaviour(rlvCmd.getObjectID(), rlvCmd.getBehaviourType()))
 		{
 			LLVfxManager::instance().addEffect(new RlvSphereEffect(rlvCmd.getObjectID()));
+			if (!gPipeline.mPostHelperMap.isComplete())
+			{
+				// In case of deferred with no shadows, no ambient occlusion, no depth of field, and no antialiasing
+				gPipeline.releaseGLBuffers();
+				gPipeline.createGLBuffers();
+				RLV_ASSERT(gPipeline.mPostHelperMap.isComplete());
+			}
 		}
 		else
 		{