diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index b99465ee4727651aefd0c6aa8cf14e9c0ac1b630..fdb674c433e729da7f6083e0657ffd6eb8c3577f 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -578,7 +578,7 @@ bool LLGLManager::initGL()
 
 	if (mGLVersion >= 3.f && LLImageGL::sCompressTextures)
 	{ //use texture compression
-		glHint(GL_TEXTURE_COMPRESSION_HINT, GL_FASTEST);
+		glHint(GL_TEXTURE_COMPRESSION_HINT, GL_NICEST);
 	}
 	else
 	{ //GL version is < 3.0, always disable texture compression
diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h
index 6b1654ae8750a69e0aebc311c1d3dc4e086c3d02..af8afef2031716a7212d5cb709561901b39d5294 100644
--- a/indra/newview/llviewertexture.h
+++ b/indra/newview/llviewertexture.h
@@ -264,6 +264,8 @@ class LLViewerTexture : public LLTexture
 	void setTexelsPerImage();
 private:
 	friend class LLBumpImageList;
+	friend class LLUIImageList;
+
 	//note: do not make this function public.
 	/*virtual*/ LLImageGL* getGLTexture() const ;
 	virtual void switchToCachedImage();
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index 089f45ca899ae58eea2c7f36a0b4f81bd8d351ed..f1555388a29f1225564e52f2dea2fb73966e547e 100644
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -1432,6 +1432,9 @@ LLUIImagePtr LLUIImageList::loadUIImage(LLViewerFetchedTexture* imagep, const st
 
 	imagep->setAddressMode(LLTexUnit::TAM_CLAMP);
 
+	//don't compress UI images
+	imagep->getGLTexture()->setAllowCompression(false);
+
 	//all UI images are non-deletable
 	imagep->setNoDelete();