diff --git a/doc/contributions.txt b/doc/contributions.txt
index 151243e2dc02b326f5be15f77f229e12b73e5773..1f374f204a3dab1dbb981f2a8ac576879add7150 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -402,6 +402,7 @@ Michelle2 Zenovka
 Mm Alder
 	VWR-197
 	VWR-3777
+	VWR-4232
 	VWR-4794
 	VWR-13578
 Mr Greggan
diff --git a/indra/newview/llhudeffectbeam.cpp b/indra/newview/llhudeffectbeam.cpp
index 078ccff2d0f54b96b520fa37595546c610d7e91a..37b7b2e75dc6abe3b0139c1ed17f7878a0b7ded9 100644
--- a/indra/newview/llhudeffectbeam.cpp
+++ b/indra/newview/llhudeffectbeam.cpp
@@ -305,6 +305,11 @@ void LLHUDEffectBeam::render()
 	}
 }
 
+void LLHUDEffectBeam::renderForTimer()
+{
+	render();
+}
+
 void LLHUDEffectBeam::setupParticle(const S32 i)
 {
 	LLVector3d start_pos_global;
diff --git a/indra/newview/llhudeffectbeam.h b/indra/newview/llhudeffectbeam.h
index a700e4e6578a132983c455810b44883b0c4dfd27..fdee5178af266059a04c808d8bddfab8c78bbb81 100644
--- a/indra/newview/llhudeffectbeam.h
+++ b/indra/newview/llhudeffectbeam.h
@@ -52,6 +52,7 @@ class LLHUDEffectBeam : public LLHUDEffect
 	~LLHUDEffectBeam();
 
 	/*virtual*/ void render();
+	/*virtual*/ void renderForTimer();
 	/*virtual*/ void packData(LLMessageSystem *mesgsys);
 	/*virtual*/ void unpackData(LLMessageSystem *mesgsys, S32 blocknum);
 private:
diff --git a/indra/newview/llhudeffecttrail.cpp b/indra/newview/llhudeffecttrail.cpp
index 9072707974053e2e11d5f14df6acc61287bf89db..39b526c1b5a652fc4ed9e6a8b78720dda872db62 100644
--- a/indra/newview/llhudeffecttrail.cpp
+++ b/indra/newview/llhudeffecttrail.cpp
@@ -280,3 +280,8 @@ void LLHUDEffectSpiral::render()
 		return;
 	}
 }
+
+void LLHUDEffectSpiral::renderForTimer()
+{
+	render();
+}
diff --git a/indra/newview/llhudeffecttrail.h b/indra/newview/llhudeffecttrail.h
index bade3ff997f0e031c26e3a8a53c0d1b11472bdc6..6f5a328c6364e4305698518a62215dec4a1960d9 100644
--- a/indra/newview/llhudeffecttrail.h
+++ b/indra/newview/llhudeffecttrail.h
@@ -62,6 +62,7 @@ class LLHUDEffectSpiral : public LLHUDEffect
 	~LLHUDEffectSpiral();
 
 	/*virtual*/ void render();
+	/*virtual*/ void renderForTimer();
 	/*virtual*/ void packData(LLMessageSystem *mesgsys);
 	/*virtual*/ void unpackData(LLMessageSystem *mesgsys, S32 blocknum);
 private:
diff --git a/indra/newview/llhudobject.cpp b/indra/newview/llhudobject.cpp
index 6af0ae2b6a14b804075aa74d98cf21d0ec8415d7..3e814a0773efbd06c5459cbc3ac96850c1b93db7 100644
--- a/indra/newview/llhudobject.cpp
+++ b/indra/newview/llhudobject.cpp
@@ -304,6 +304,27 @@ void LLHUDObject::renderAllForSelect()
 	}
 }
 
+// static
+void LLHUDObject::renderAllForTimer()
+{
+	LLHUDObject *hud_objp;
+	
+	hud_object_list_t::iterator object_it;
+	for (object_it = sHUDObjects.begin(); object_it != sHUDObjects.end(); )
+	{
+		hud_object_list_t::iterator cur_it = object_it++;
+		hud_objp = (*cur_it);
+		if (hud_objp->getNumRefs() == 1)
+		{
+			sHUDObjects.erase(cur_it);
+		}
+		else if (hud_objp->isVisible())
+		{
+			hud_objp->renderForTimer();
+		}
+	}
+}
+
 // static
 void LLHUDObject::sortObjects()
 {
diff --git a/indra/newview/llhudobject.h b/indra/newview/llhudobject.h
index ff70b6a52f981358baee4ba85a3a085c3abff115..97145b9a84d40d60f66cfc0e72ea1e2d749876b9 100644
--- a/indra/newview/llhudobject.h
+++ b/indra/newview/llhudobject.h
@@ -69,6 +69,7 @@ class LLHUDObject : public LLRefCount
 	static void updateAll();
 	static void renderAll();
 	static void renderAllForSelect();
+	static void renderAllForTimer();
 
 	static void cleanupHUDObjects();
 
@@ -100,6 +101,7 @@ class LLHUDObject : public LLRefCount
 
 	virtual void render() = 0;
 	virtual void renderForSelect() {};
+	virtual void renderForTimer() {};
 	
 protected:
 	U8				mType;
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index e4c2ca9ae39ec5a408a5209332dfabbcc1095093..1ee3b84b5e7666ae4aeeac587710b4b410bc4252 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -3211,11 +3211,24 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
 
 	LLVertexBuffer::unbind();
 	
-	if (!LLPipeline::sReflectionRender && !LLPipeline::sRenderDeferred && gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI))
+	if (!LLPipeline::sReflectionRender && !LLPipeline::sRenderDeferred)
 	{
-		// Render debugging beacons.
-		gObjectList.renderObjectBeacons();
-		gObjectList.resetObjectBeacons();
+		if (gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI))
+		{
+		      // Render debugging beacons.
+		      gObjectList.renderObjectBeacons();
+		      gObjectList.resetObjectBeacons();
+		}
+		else
+		{
+			// Make sure particle effects disappear
+			LLHUDObject::renderAllForTimer();
+		}
+	}
+	else
+	{
+		// Make sure particle effects disappear
+		LLHUDObject::renderAllForTimer();
 	}
 
 	LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderGeomEnd");