diff --git a/doc/contributions.txt b/doc/contributions.txt
index 5892a8081d8f7ec5d0074540edc572cacc971bcb..8087a870042bc9bfaf099303883a91cd1634b00b 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -162,6 +162,7 @@ Boroondas Gupte
 	SNOW-527
 	SNOW-610
 	SNOW-624
+	SNOW-737
 	VWR-233
 	WEB-262
 Bulli Schumann
diff --git a/indra/cmake/PNG.cmake b/indra/cmake/PNG.cmake
index 4d0b7b2d8d3742e2422291719b7090267857e5df..f6522d9e2fd397acfcf594d0a012496b4bde5c02 100644
--- a/indra/cmake/PNG.cmake
+++ b/indra/cmake/PNG.cmake
@@ -9,5 +9,5 @@ if (STANDALONE)
 else (STANDALONE)
   use_prebuilt_binary(libpng)
   set(PNG_LIBRARIES png12)
-  set(PNG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)
+  set(PNG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/libpng12)
 endif (STANDALONE)
diff --git a/indra/llimage/llpngwrapper.cpp b/indra/llimage/llpngwrapper.cpp
index 02043586b29e00e082b7a6a2909b64335b59853b..fe737e2072ab3be51faaa4052463221a22638668 100644
--- a/indra/llimage/llpngwrapper.cpp
+++ b/indra/llimage/llpngwrapper.cpp
@@ -210,7 +210,7 @@ void LLPngWrapper::normalizeImage()
 	}
     if (mColorType == PNG_COLOR_TYPE_GRAY && mBitDepth < 8)
 	{
-		png_set_gray_1_2_4_to_8(mReadPngPtr);
+		png_set_expand_gray_1_2_4_to_8(mReadPngPtr);
 	}
 	if (mColorType == PNG_COLOR_TYPE_GRAY
 		|| mColorType == PNG_COLOR_TYPE_GRAY_ALPHA)
@@ -358,7 +358,7 @@ void LLPngWrapper::releaseResources()
 {
 	if (mReadPngPtr || mReadInfoPtr)
 	{
-		png_destroy_read_struct(&mReadPngPtr, &mReadInfoPtr, png_infopp_NULL);
+		png_destroy_read_struct(&mReadPngPtr, &mReadInfoPtr, NULL);
 		mReadPngPtr = NULL;
 		mReadInfoPtr = NULL;
 	}
diff --git a/indra/llimage/llpngwrapper.h b/indra/llimage/llpngwrapper.h
index 0721adea3b7128985edb65db65217e103bdd5360..47a4207d6677a9927ed2322cd817359025e758e5 100644
--- a/indra/llimage/llpngwrapper.h
+++ b/indra/llimage/llpngwrapper.h
@@ -26,7 +26,7 @@
 #ifndef LL_LLPNGWRAPPER_H
 #define LL_LLPNGWRAPPER_H
 
-#include "libpng12/png.h"
+#include "png.h"
 #include "llimage.h"
 
 class LLPngWrapper
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index fd6b8b739dc669c94af2ae70e18f1f6e7d5eaf5d..92a9b83bc5aabbafa352870f4520b2e633619f54 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -928,8 +928,9 @@ bool LLAppViewer::init()
 
 	//EXT-7013 - On windows for some locale (Japanese) standard 
 	//datetime formatting functions didn't support some parameters such as "weekday".
+	//Names for days and months localized in xml are also useful for Polish locale(STORM-107).
 	std::string language = LLControlGroup::getInstance(sGlobalSettingsName)->getString("Language");
-	if(language == "ja")
+	if(language == "ja" || language == "pl")
 	{
 		LLStringOps::setupWeekDaysNames(LLTrans::getString("dateTimeWeekdaysNames"));
 		LLStringOps::setupWeekDaysShortNames(LLTrans::getString("dateTimeWeekdaysShortNames"));
diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp
index b1e11e1a2a687da66ba8f6762c25c51cf9b8dfa8..84c560639e00961b568c25f1a92f03f039ecfc00 100644
--- a/indra/newview/llcofwearables.cpp
+++ b/indra/newview/llcofwearables.cpp
@@ -397,12 +397,20 @@ void LLCOFWearables::refresh()
 
 	mCOFVersion = catp->getVersion();
 
+	// Save current scrollbar position.
+	typedef std::map<LLFlatListView*, LLRect> scroll_pos_map_t;
+	scroll_pos_map_t saved_scroll_pos;
+
+	saved_scroll_pos[mAttachments] = mAttachments->getVisibleContentRect();
+	saved_scroll_pos[mClothing] = mClothing->getVisibleContentRect();
+	saved_scroll_pos[mBodyParts] = mBodyParts->getVisibleContentRect();
+
+	// Save current selection.
 	typedef std::vector<LLSD> values_vector_t;
 	typedef std::map<LLFlatListView*, values_vector_t> selection_map_t;
 
 	selection_map_t preserve_selection;
 
-	// Save current selection
 	mAttachments->getSelectedValues(preserve_selection[mAttachments]);
 	mClothing->getSelectedValues(preserve_selection[mClothing]);
 	mBodyParts->getSelectedValues(preserve_selection[mBodyParts]);
@@ -450,6 +458,15 @@ void LLCOFWearables::refresh()
 
 		list->setCommitOnSelectionChange(true);
 	}
+
+	// Restore previous scrollbar position.
+	for (scroll_pos_map_t::const_iterator it = saved_scroll_pos.begin(); it != saved_scroll_pos.end(); ++it)
+	{
+		LLFlatListView* list = it->first;
+		LLRect scroll_pos = it->second;
+
+		list->scrollToShowRect(scroll_pos);
+	}
 }
 
 
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index 7206e4fcaf936b81365ce21689552b1c68a381ce..a3c6a7b6f187bf718d9e9bfd132ba59a945573ec 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -286,6 +286,8 @@ void LLSidepanelAppearance::showOutfitsInventoryPanel()
 
 void LLSidepanelAppearance::showOutfitEditPanel()
 {
+	if (mOutfitEdit && mOutfitEdit->getVisible()) return;
+
 	// Accordion's state must be reset in all cases except the one when user
 	// is returning back to the mOutfitEdit panel from the mEditWearable panel.
 	// The simplest way to control this is to check the visibility state of the mEditWearable