diff --git a/doc/contributions.txt b/doc/contributions.txt
index af8b259c7492a1796e2fa263ae632f9f81a0383f..2fbe8ab7cc49d1cd2451219f9c3375c292c0d8b1 100755
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -596,6 +596,7 @@ Henri Beauchamp
 	SL-15175
 	SL-19110
 	SL-19159
+	[NO JIRA] (fullbright HUD alpha fix)
 herina Bode
 Hikkoshi Sakai
 	VWR-429
diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
index 8b2a69b92492c520326753b6c54d7855e25abc36..a6fab107914468eee27c9b035a239634d3e0aedc 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
@@ -76,9 +76,9 @@ void main()
 
     vec3 pos = vary_position;
 
+    color.a = final_alpha;
 #ifndef IS_HUD
     color.rgb = srgb_to_linear(color.rgb);
-    color.a = final_alpha;
 #ifdef IS_ALPHA
 
     vec3 sunlit;
diff --git a/indra/newview/app_settings/shaders/class3/deferred/hazeF.glsl b/indra/newview/app_settings/shaders/class3/deferred/hazeF.glsl
index e8f7d73f1fead655cdfd875149c83458ee81f891..229f332b36ef081c66829064129656d9f1569211 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/hazeF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/hazeF.glsl
@@ -102,6 +102,6 @@ void main()
         alpha = 1.0;
     }
 
-    frag_color.rgb = max(color.rgb, vec3(0)); //output linear since local lights will be added to this shader's results
-    frag_color.a = alpha;
+    frag_color = max(vec4(color.rgb, alpha), vec4(0)); //output linear since local lights will be added to this shader's results
+    
 }
diff --git a/indra/newview/app_settings/shaders/class3/deferred/waterHazeF.glsl b/indra/newview/app_settings/shaders/class3/deferred/waterHazeF.glsl
index 13619a82d30bcdff504e9f7aba30e7e707f9096a..f6b8299f91454efa42ae0e13c62b1cc18fe82334 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/waterHazeF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/waterHazeF.glsl
@@ -60,6 +60,6 @@ void main()
 
     vec4 fogged = getWaterFogView(pos.xyz);
 
-    frag_color.rgb = max(fogged.rgb, vec3(0)); //output linear since local lights will be added to this shader's results
-    frag_color.a = fogged.a;
+    frag_color = max(fogged, vec4(0)); //output linear since local lights will be added to this shader's results
+    
 }
diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp
index 871a0d8e8875e0466b10080722dfe3d569037bc2..3579883c9ee246d13c274a305ebb95f19e57202e 100644
--- a/indra/newview/llpanelface.cpp
+++ b/indra/newview/llpanelface.cpp
@@ -4197,6 +4197,7 @@ void LLPanelFace::onCopyTexture()
                 te_data["te"]["bumpmap"] = tep->getBumpmap();
                 te_data["te"]["bumpshiny"] = tep->getBumpShiny();
                 te_data["te"]["bumpfullbright"] = tep->getBumpShinyFullbright();
+                te_data["te"]["texgen"] = tep->getTexGen();
                 te_data["te"]["pbr"] = objectp->getRenderMaterialID(te);
                 if (tep->getGLTFMaterialOverride() != nullptr)
                 {
@@ -4592,6 +4593,11 @@ void LLPanelFace::onPasteTexture(LLViewerObject* objectp, S32 te)
             {
                 objectp->setTEBumpShinyFullbright(te, (U8)te_data["te"]["bumpfullbright"].asInteger());
             }
+            if (te_data["te"].has("texgen"))
+            {
+                objectp->setTETexGen(te, (U8)te_data["te"]["texgen"].asInteger());
+            }
+
             // PBR/GLTF
             if (te_data["te"].has("pbr"))
             {
@@ -4703,11 +4709,11 @@ void LLPanelFace::onPasteTexture(LLViewerObject* objectp, S32 te)
             LLSelectedTEMaterial::setSpecularOffsetX(this, (F32)te_data["material"]["SpecOffX"].asReal(), te, object_id);
             LLSelectedTEMaterial::setSpecularOffsetY(this, (F32)te_data["material"]["SpecOffY"].asReal(), te, object_id);
             LLSelectedTEMaterial::setSpecularRotation(this, (F32)te_data["material"]["SpecRot"].asReal(), te, object_id);
-            LLColor4 spec_color(te_data["material"]["SpecColor"]);
+            LLColor4U spec_color(te_data["material"]["SpecColor"]);
             LLSelectedTEMaterial::setSpecularLightColor(this, spec_color, te);
             LLSelectedTEMaterial::setSpecularLightExponent(this, (U8)te_data["material"]["SpecExp"].asInteger(), te, object_id);
             LLSelectedTEMaterial::setEnvironmentIntensity(this, (U8)te_data["material"]["EnvIntensity"].asInteger(), te, object_id);
-            LLSelectedTEMaterial::setDiffuseAlphaMode(this, (U8)te_data["material"]["SpecRot"].asInteger(), te, object_id);
+            LLSelectedTEMaterial::setDiffuseAlphaMode(this, (U8)te_data["material"]["DiffuseAlphaMode"].asInteger(), te, object_id);
             if (te_data.has("te") && te_data["te"].has("shiny"))
             {
                 objectp->setTEShiny(te, (U8)te_data["te"]["shiny"].asInteger());
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 318fcb721577e15748ded2d054545e048ddd73af..720840ac24fef9a7428ed1f5b6637459cb3f0a38 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -8314,6 +8314,11 @@ void LLPipeline::doAtmospherics()
 {
     LL_PROFILE_ZONE_SCOPED_CATEGORY_PIPELINE;
 
+    if (sImpostorRender)
+    { // do not attempt atmospherics on impostors
+        return;
+    }
+
     if (RenderDeferredAtmospheric)
     {
         {
@@ -8373,6 +8378,10 @@ void LLPipeline::doAtmospherics()
 void LLPipeline::doWaterHaze()
 {
     LL_PROFILE_ZONE_SCOPED_CATEGORY_PIPELINE;
+    if (sImpostorRender)
+    { // do not attempt water haze on impostors
+        return;
+    }
 
     if (RenderDeferredAtmospheric)
     {