diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp
index 16b43019474b7c9441cff650f66d6220a18f4043..cde9328b5e0e8ccff9f039b6151b422aa79a044a 100644
--- a/indra/newview/lldrawpoolavatar.cpp
+++ b/indra/newview/lldrawpoolavatar.cpp
@@ -2412,8 +2412,8 @@ void LLDrawPoolAvatar::addRiggedFace(LLFace* facep, U32 type)
 	}
 
 	const LLTextureEntry* tex_entry = facep->getTextureEntry();
-	// Don't render invisible faces even when they are in a linkset.
-	if (tex_entry && tex_entry->getColor().mV[VW] <= 0.001f)
+	// Don't render invisible faces even when they are in a linkset except if there's glow.
+	if (tex_entry && tex_entry->getColor().mV[VW] <= 0.001f && tex_entry->getGlow() <= 0.f)
 	{
 		return;
 	}
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 4012f07267375ce4fed7ae2dca34af6927406a13..438d2e6c7ea4e2441cb8e2be29bceaa2101756bb 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -5940,7 +5940,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
 						}
 						else
 						{
-							if (te->getColor().mV[3] > 0.f)
+							if (te->getColor().mV[3] > 0.f || te->getGlow() > 0.f)
 							{ //only treat as alpha in the pipeline if < 100% transparent
 								drawablep->setState(LLDrawable::HAS_ALPHA);
 								if (alpha_count < MAX_FACE_COUNT)
@@ -6651,7 +6651,7 @@ U32 LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFace
 
 			const LLTextureEntry* te = facep->getTextureEntry();
 
-			if (!LLDrawPoolAlpha::sShowDebugAlpha && te->getColor().mV[3] <= 0.001f)
+			if (!LLDrawPoolAlpha::sShowDebugAlpha && te->getColor().mV[3] <= 0.001f && te->getGlow() <= 0.f)
 			{
 				++face_iter;
 				continue;