diff --git a/indra/newview/app_settings/settings_alchemy.xml b/indra/newview/app_settings/settings_alchemy.xml
index b2aa387070871d47c2fbddf7e5dcfecab7bb8bc7..655c8c0556eea7730204a65604149ee6fec4b859 100644
--- a/indra/newview/app_settings/settings_alchemy.xml
+++ b/indra/newview/app_settings/settings_alchemy.xml
@@ -596,5 +596,16 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
+    <key>UIImgTransparentUUID</key>
+    <map>
+      <key>Comment</key>
+      <string />
+      <key>Persist</key>
+      <integer>0</integer>
+      <key>Type</key>
+      <string>String</string>
+      <key>Value</key>
+      <string>8dcd4a48-2d37-4909-9f78-f7a9eb4ef903</string>
+    </map>
   </map>
 </llsd>
diff --git a/indra/newview/lloutfitgallery.cpp b/indra/newview/lloutfitgallery.cpp
index 35b77d9c3e4fb8aaabd7a2461b25d14b244cfebe..e616cfe743b1b1d720d531562d72ac75403a584a 100644
--- a/indra/newview/lloutfitgallery.cpp
+++ b/indra/newview/lloutfitgallery.cpp
@@ -1353,6 +1353,7 @@ void LLOutfitGallery::onSelectPhoto(LLUUID selected_outfit_id)
                 getPhotoAssetId(selected_outfit_id),
                 getPhotoAssetId(selected_outfit_id),
                 getPhotoAssetId(selected_outfit_id),
+                getPhotoAssetId(selected_outfit_id),
                 FALSE,
                 TRUE,
                 "SELECT PHOTO",
diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp
index 5cbbc07e318759c5e2fdaa281453ebb8cbff2bd0..e09ef72b8848f5671bc1ad485a7dbd42c0b60c6c 100644
--- a/indra/newview/lltexturectrl.cpp
+++ b/indra/newview/lltexturectrl.cpp
@@ -84,6 +84,7 @@ LLFloaterTexturePicker::LLFloaterTexturePicker(
 	LLView* owner,
 	LLUUID image_asset_id,
 	LLUUID default_image_asset_id,
+	LLUUID transparent_image_asset_id,
 	LLUUID blank_image_asset_id,
 	BOOL tentative,
 	BOOL allow_no_texture,
@@ -99,6 +100,7 @@ LLFloaterTexturePicker::LLFloaterTexturePicker(
 	mOriginalImageAssetID(image_asset_id),
 	mFallbackImage(fallback_image),
 	mDefaultImageAssetID(default_image_asset_id),
+	mTransparentImageAssetID(transparent_image_asset_id),
 	mBlankImageAssetID(blank_image_asset_id),
 	mTentative(tentative),
 	mAllowNoTexture(allow_no_texture),
@@ -353,6 +355,7 @@ BOOL LLFloaterTexturePicker::postBuild()
 	childSetAction("Default",LLFloaterTexturePicker::onBtnSetToDefault,this);
 	childSetAction("None", LLFloaterTexturePicker::onBtnNone,this);
 	childSetAction("Blank", LLFloaterTexturePicker::onBtnBlank,this);
+	childSetAction("Transparent", LLFloaterTexturePicker::onBtnTransparent,this);
 
 
 	childSetCommitCallback("show_folders_check", onShowFolders, this);
@@ -409,6 +412,9 @@ BOOL LLFloaterTexturePicker::postBuild()
 	mLocalScrollCtrl->setCommitCallback(onLocalScrollCommit, this);
 	LLLocalBitmapMgr::getInstance()->feedScrollList(mLocalScrollCtrl);
 
+	getChild<LLLineEditor>("uuid_editor")->setCommitCallback(boost::bind(&onApplyUUID, this));
+	getChild<LLButton>("apply_uuid_btn")->setClickedCallback(boost::bind(&onApplyUUID, this));
+
 	mNoCopyTextureSelected = FALSE;
 
 	getChild<LLUICtrl>("apply_immediate_check")->setValue(gSavedSettings.getBOOL("TextureLivePreview"));
@@ -483,6 +489,7 @@ void LLFloaterTexturePicker::draw()
 		}
 
 		getChildView("Default")->setEnabled(mImageAssetID != mDefaultImageAssetID || mTentative);
+		getChildView("Transparent")->setEnabled(mImageAssetID != mTransparentImageAssetID || mTentative);
 		getChildView("Blank")->setEnabled(mImageAssetID != mBlankImageAssetID || mTentative);
 		getChildView("None")->setEnabled(mAllowNoTexture && (!mImageAssetID.isNull() || mTentative));
 
@@ -636,6 +643,15 @@ void LLFloaterTexturePicker::onBtnSetToDefault(void* userdata)
 	self->commitIfImmediateSet();
 }
 
+// static
+void LLFloaterTexturePicker::onBtnTransparent(void* userdata)
+{
+	LLFloaterTexturePicker* self = (LLFloaterTexturePicker*) userdata;
+	self->setCanApply(true, true);
+	self->setImageID( self->getTransparentImageAssetID() );
+	self->commitIfImmediateSet();
+}
+
 // static
 void LLFloaterTexturePicker::onBtnBlank(void* userdata)
 {
@@ -714,6 +730,18 @@ void LLFloaterTexturePicker::onBtnPipette()
 	}
 }
 
+// static
+void LLFloaterTexturePicker::onApplyUUID(void* userdata)
+{
+	LLFloaterTexturePicker* self = (LLFloaterTexturePicker*) userdata;
+	LLUUID id(self->getChild<LLLineEditor>("uuid_editor")->getText());
+	if (id.notNull())
+	{
+		self->setImageID(id);
+		self->commitIfImmediateSet();
+	}
+}
+
 void LLFloaterTexturePicker::onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action)
 {
 	if (items.size())
@@ -759,11 +787,14 @@ void LLFloaterTexturePicker::onModeSelect(LLUICtrl* ctrl, void *userdata)
     int index = self->mModeSelector->getValue().asInteger();
 
 	self->getChild<LLButton>("Default")->setVisible(index == 0 ? TRUE : FALSE);
+	self->getChild<LLButton>("Transparent")->setVisible(index == 0 ? TRUE : FALSE);
 	self->getChild<LLButton>("Blank")->setVisible(index == 0 ? TRUE : FALSE);
 	self->getChild<LLButton>("None")->setVisible(index == 0 ? TRUE : FALSE);
 	self->getChild<LLButton>("Pipette")->setVisible(index == 0 ? TRUE : FALSE);
 	self->getChild<LLFilterEditor>("inventory search editor")->setVisible(index == 0 ? TRUE : FALSE);
 	self->getChild<LLInventoryPanel>("inventory panel")->setVisible(index == 0 ? TRUE : FALSE);
+	self->getChild<LLLineEditor>("uuid_editor")->setVisible(index == 0 ? TRUE : FALSE);
+	self->getChild<LLButton>("apply_uuid_btn")->setVisible(index == 0 ? TRUE : FALSE);
 
 	/*self->getChild<LLCheckBox>("show_folders_check")->setVisible(mode);
 	  no idea under which conditions the above is even shown, needs testing. */
@@ -1161,6 +1192,9 @@ LLTextureCtrl::LLTextureCtrl(const LLTextureCtrl::Params& p)
 	mFallbackImage(p.fallback_image)
 {
 
+	LLUUID transparentImage( gSavedSettings.getString( "UIImgTransparentUUID" ) );
+	setTransparentImageAssetID( transparentImage );
+
 	// Default of defaults is white image for diff tex
 	//
 	LLUUID whiteImage( gSavedSettings.getString( "UIImgWhiteUUID" ) );
@@ -1321,6 +1355,7 @@ void LLTextureCtrl::showPicker(BOOL take_focus)
 			this,
 			getImageAssetID(),
 			getDefaultImageAssetID(),
+			getTransparentImageAssetID(),
 			getBlankImageAssetID(),
 			getTentative(),
 			getAllowNoTexture(),
diff --git a/indra/newview/lltexturectrl.h b/indra/newview/lltexturectrl.h
index 3208983faae5ab059906468e50a9748373d6a322..1190fd04b2f232a0f61d0febf5ad12b0dfc4c32a 100644
--- a/indra/newview/lltexturectrl.h
+++ b/indra/newview/lltexturectrl.h
@@ -161,6 +161,9 @@ class LLTextureCtrl
 
 	void			setOpenTexPreview(bool open_preview) { mOpenTexPreview = open_preview; }
 
+	void			setTransparentImageAssetID( const LLUUID& id )	{ mTransparentImageAssetID = id; }
+	const LLUUID&	getTransparentImageAssetID() const { return mTransparentImageAssetID; }
+
 	void			setCaption(const std::string& caption);
 	void			setCanApplyImmediately(BOOL b);
 
@@ -221,6 +224,7 @@ class LLTextureCtrl
 	LLUUID					 	mImageAssetID;
 	LLUUID					 	mDefaultImageAssetID;
 	LLUUID					 	mBlankImageAssetID;
+	LLUUID					 	mTransparentImageAssetID;
 	LLUIImagePtr				mFallbackImage;
 	std::string					mDefaultImageName;
 	LLHandle<LLFloater>			mFloaterHandle;
@@ -257,6 +261,7 @@ class LLFloaterTexturePicker final : public LLFloater
 		LLView* owner,
 		LLUUID image_asset_id,
 		LLUUID default_image_asset_id,
+		LLUUID transparent_image_asset_id,
 		LLUUID blank_image_asset_id,
 		BOOL tentative,
 		BOOL allow_no_texture,
@@ -309,6 +314,7 @@ class LLFloaterTexturePicker final : public LLFloater
 	void setSetImageAssetIDCallback(const set_image_asset_id_callback& cb) { mSetImageAssetIDCallback = cb; }
 	void setOnUpdateImageStatsCallback(const set_on_update_image_stats_callback& cb) { mOnUpdateImageStatsCallback = cb; }
 	const LLUUID& getDefaultImageAssetID() { return mDefaultImageAssetID; }
+	const LLUUID& getTransparentImageAssetID() { return mTransparentImageAssetID; }
 	const LLUUID& getBlankImageAssetID() { return mBlankImageAssetID; }
 
 	static void		onBtnSetToDefault(void* userdata);
@@ -316,9 +322,11 @@ class LLFloaterTexturePicker final : public LLFloater
 	static void		onBtnCancel(void* userdata);
 	void			onBtnPipette();
 	//static void		onBtnRevert( void* userdata );
+	static void		onBtnTransparent(void* userdata);
 	static void		onBtnBlank(void* userdata);
 	static void		onBtnNone(void* userdata);
 	static void		onBtnClear(void* userdata);
+	static void		onApplyUUID(void* userdata);
 	void			onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action);
 	static void		onShowFolders(LLUICtrl* ctrl, void* userdata);
 	static void		onApplyImmediateCheck(LLUICtrl* ctrl, void* userdata);
@@ -343,6 +351,7 @@ class LLFloaterTexturePicker final : public LLFloater
 	LLUUID				mImageAssetID; // Currently selected texture
 	LLUIImagePtr		mFallbackImage; // What to show if currently selected texture is null.
 	LLUUID				mDefaultImageAssetID;
+	LLUUID				mTransparentImageAssetID;
 	LLUUID				mBlankImageAssetID;
 	BOOL				mTentative;
 	BOOL				mAllowNoTexture;
diff --git a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml
index 3a669113894d437f79500a18031ffa0e0dfff497..be91226a7ba41f2fb9a5f1ec47f740f95dfcb054 100644
--- a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml
@@ -3,9 +3,9 @@
  legacy_header_height="18"
  can_minimize="false"
  can_resize="true"
- height="330"
+ height="375"
  layout="topleft"
- min_height="330"
+ min_height="375"
  min_width="410"
  name="texture picker"
  help_topic="texture_picker"
@@ -63,6 +63,10 @@
          value="0" />
       <combo_box.item
          label="Local"
+         left_pad="0"
+         layout="topleft"
+         top_delta="0" 
+         height="16" 
          name="local"
          value="1" />
       <combo_box.item
@@ -88,7 +92,7 @@
     <button
      enabled="false"
      follows="left|top"
-     height="18"
+     height="20"
      label="Default"
      label_selected="Default"
      layout="topleft"
@@ -96,6 +100,16 @@
      width="73"
 	 left="94"
      top="215"/>
+    <button
+     follows="left|top"
+     height="20"
+     label="Transparent"
+     label_selected="Transparent"
+     layout="topleft"
+     left_delta="0"
+     name="Transparent"
+     top_pad="5"
+     width="73" />
     <button
      follows="left|top"
      height="20"
@@ -123,21 +137,21 @@
      image_selected="eye_button_active.tga"
      image_unselected="eye_button_inactive.tga"
      layout="topleft"
-     left="18"
-     top_delta="-23"
+     left_delta="-80"
+     top_delta="-25"
      name="Pipette"
      width="28" />
    <text
      follows="left|bottom"
-     height="40"
+     height="20"
      layout="topleft"
      left="8"
      name="preview_disabled"
-     top="285"
+     top="266"
      value="Preview Disabled"
      word_wrap="true"
      visible="false"
-     width="87" />
+     width="120" />
     <filter_editor
      follows="left|top|right"
      height="23"
@@ -153,38 +167,57 @@
      bg_alpha_color="DkGray2"
      border="false"
      follows="all"
-     height="233"
+     height="262"
      layout="topleft"
      left_delta="0"
      name="inventory panel"
      top_pad="4"
-     width="231"
-     filter_asset_type="texture"/>
+     width="231" />
      <check_box
-     height="14"
+     visible="false"
+     height="0"
      initial_value="false"
      label="Show folders"
      layout="topleft"
      name="show_folders_check"
      top_pad="0"
      left_delta="-3"
-     width="200" />
+     width="0" />
+    <line_editor
+     follows="left|bottom|right"
+     layout="topleft"
+     name="uuid_editor"
+     label="Enter Texture UUID"
+     max_length_chars="36"
+     top_pad="7"
+     height="20"
+     width="296"
+     left="5" />
+    <button
+     follows="bottom|right"
+     layout="topleft"
+     name="apply_uuid_btn"
+     label="Apply Key"
+     left_pad="5"
+     top_delta="0"
+     height="20"
+     width="100" />
 
 <!--  middle: local mode -->
     <button
-     follows="left|top"
+     follows="left|bottom"
      height="18"
      label="Add"
      label_selected="Add"
      layout="topleft"
      left="94"
-     top="215"
+     top="272"
      name="l_add_btn"
      width="73"
      visible="false"/>
     <button
      enabled="false"
-     follows="left|top"
+     follows="left|bottom"
      height="20"
      label="Remove"
      label_selected="Remove"
@@ -196,7 +229,7 @@
      visible="false"/>
     <button
      enabled="false"
-     follows="left|top"
+     follows="left|bottom"
      height="20"
      label="Upload"
      label_selected="Upload"
@@ -209,9 +242,9 @@
     <scroll_list
      name="l_name_list"
      left="170"
-     top="22"
+     top="20"
      width="235"
-     height="260"
+     height="320"
      follows="left|top|right|bottom"
      column_padding="0"
      draw_heading="true"
@@ -298,22 +331,22 @@ layout="topleft"
      visible="false"/>
 <!-- bottom static -->
     <button
-     follows="bottom"
+     follows="bottom|right"
      height="20"
      label="OK"
      label_selected="OK"
      layout="topleft"
-     left="176"
+     left="-209"
      top="-30"
      name="Select"
      width="100" />
     <button
-     follows="bottom"
+     follows="bottom|right"
      height="20"
      label="Cancel"
      label_selected="Cancel"
      layout="topleft"
-     left_delta="120"
+     left_delta="105"
      top_delta="0"
      name="Cancel"
      width="100" />
@@ -326,5 +359,5 @@ layout="topleft"
      left="6"
      name="apply_immediate_check"
      top_delta="0"
-     width="150" />
+     width="120" />
 </floater>