diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index c28bcc2ec9fa0523f6b9290c3a3f194fe70f74b6..f85e46e28d83f485408060ad68016c195481fb39 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -459,15 +459,24 @@ void LLFloater::layoutResizeCtrls()
 	mResizeHandle[3]->setRect(rect);
 }
 
-void LLFloater::enableResizeCtrls(bool enable)
+void LLFloater::enableResizeCtrls(bool enable, bool width, bool height)
 {
+	mResizeBar[LLResizeBar::LEFT]->setVisible(enable && width);
+	mResizeBar[LLResizeBar::LEFT]->setEnabled(enable && width);
+
+	mResizeBar[LLResizeBar::TOP]->setVisible(enable && height);
+	mResizeBar[LLResizeBar::TOP]->setEnabled(enable && height);
+	
+	mResizeBar[LLResizeBar::RIGHT]->setVisible(enable && width);
+	mResizeBar[LLResizeBar::RIGHT]->setEnabled(enable && width);
+	
+	mResizeBar[LLResizeBar::BOTTOM]->setVisible(enable && height);
+	mResizeBar[LLResizeBar::BOTTOM]->setEnabled(enable && height);
+
 	for (S32 i = 0; i < 4; ++i)
 	{
-		mResizeBar[i]->setVisible(enable);
-		mResizeBar[i]->setEnabled(enable);
-
-		mResizeHandle[i]->setVisible(enable);
-		mResizeHandle[i]->setEnabled(enable);
+		mResizeHandle[i]->setVisible(enable && width && height);
+		mResizeHandle[i]->setEnabled(enable && width && height);
 	}
 }
 
diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
index 5aff542049c0b53d968c48af7e8d9e941ff86b10..af9665e599bf8d99518ca9a689f2e811c4941922 100644
--- a/indra/llui/llfloater.h
+++ b/indra/llui/llfloater.h
@@ -291,6 +291,7 @@ friend class LLMultiFloater;
 
 	void			updateTransparency(ETypeTransparency transparency_type);
 		
+	void			enableResizeCtrls(bool enable, bool width = true, bool height = true);
 protected:
 	virtual void    applySavedVariables();
 
@@ -340,7 +341,6 @@ friend class LLMultiFloater;
 	BOOL			offerClickToButton(S32 x, S32 y, MASK mask, EFloaterButton index);
 	void			addResizeCtrls();
 	void			layoutResizeCtrls();
-	void			enableResizeCtrls(bool enable);
 	void 			addDragHandle();
 	void			layoutDragHandle();		// repair layout
 
diff --git a/indra/llui/llresizehandle.cpp b/indra/llui/llresizehandle.cpp
index 942e84eeb6570302226494d8065f181c45db1fcb..c3a51c36c94a037c3a5c3a408066ac08307c4567 100644
--- a/indra/llui/llresizehandle.cpp
+++ b/indra/llui/llresizehandle.cpp
@@ -55,8 +55,6 @@ LLResizeHandle::LLResizeHandle(const LLResizeHandle::Params& p)
 	mImage( NULL ),
 	mMinWidth( p.min_width ),
 	mMinHeight( p.min_height ),
-	mMaxWidth(S32_MAX),
-	mMaxHeight(S32_MAX),
 	mCorner( p.corner )
 {
 	if( RIGHT_BOTTOM == mCorner)
@@ -179,11 +177,6 @@ BOOL LLResizeHandle::handleHover(S32 x, S32 y, MASK mask)
 				new_width = mMinWidth;
 				delta_x = x_multiple * (mMinWidth - orig_rect.getWidth());
 			}
-			else if (new_width > mMaxWidth)
-			{
-				new_width = mMaxWidth;
-				delta_x = x_multiple * (mMaxWidth - orig_rect.getWidth());
-			}
 
 			S32 new_height = orig_rect.getHeight() + y_multiple * delta_y;
 			if( new_height < mMinHeight )
@@ -191,11 +184,6 @@ BOOL LLResizeHandle::handleHover(S32 x, S32 y, MASK mask)
 				new_height = mMinHeight;
 				delta_y = y_multiple * (mMinHeight - orig_rect.getHeight());
 			}
-			else if (new_height > mMaxHeight)
-			{
-				new_height = mMaxHeight;
-				delta_y = y_multiple * (mMaxHeight - orig_rect.getHeight());
-			}
 
 			switch( mCorner )
 			{
diff --git a/indra/llui/llresizehandle.h b/indra/llui/llresizehandle.h
index 5cfe3fb63c933120a1f5b8da563973218831f301..7541b9e6c06ac534de59deb50555111596bde1cf 100644
--- a/indra/llui/llresizehandle.h
+++ b/indra/llui/llresizehandle.h
@@ -55,10 +55,7 @@ class LLResizeHandle : public LLView
 	virtual BOOL	handleMouseUp(S32 x, S32 y, MASK mask);
 
 	void			setResizeLimits( S32 min_width, S32 min_height ) { mMinWidth = min_width; mMinHeight = min_height; }
-
-	void			setMaxWidth(S32 width) { mMaxWidth = width;}
-	void			setMaxHeight(S32 height) { mMaxHeight = height;}
-
+	
 private:
 	BOOL			pointInHandle( S32 x, S32 y );
 
@@ -69,9 +66,7 @@ class LLResizeHandle : public LLView
 	LLCoordGL		mLastMouseDir;
 	LLPointer<LLUIImage>	mImage;
 	S32				mMinWidth;
-	S32				mMaxWidth;
 	S32				mMinHeight;
-	S32				mMaxHeight;
 	const ECorner	mCorner;
 };
 
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 941cb6b9f9b97729d069d21da9c52e8af3de519a..97ccfeac29ee39567cc9b5c340da8aa27c61f905 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -168,6 +168,7 @@ set(viewer_SOURCE_FILES
     llfloaterabout.cpp
     llfloateranimpreview.cpp
     llfloaterauction.cpp
+    llfloateravatar.cpp
     llfloateravatarpicker.cpp
     llfloateravatartextures.cpp
     llfloaterbeacons.cpp
@@ -733,6 +734,7 @@ set(viewer_HEADER_FILES
     llfloaterabout.h
     llfloateranimpreview.h
     llfloaterauction.h
+    llfloateravatar.h
     llfloateravatarpicker.h
     llfloateravatartextures.h
     llfloaterbeacons.h
diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp
index 945a760d059d51daf24628f4b9c744ca408a3dcb..4c6ddc8be77f8bdc297d5f9568c49c103788c778 100644
--- a/indra/newview/llcallfloater.cpp
+++ b/indra/newview/llcallfloater.cpp
@@ -44,7 +44,6 @@
 #include "llparticipantlist.h"
 #include "llspeakers.h"
 #include "lltextutil.h"
-#include "lltransientfloatermgr.h"
 #include "llviewercontrol.h"
 #include "llviewerdisplayname.h"
 #include "llviewerwindow.h"
@@ -97,7 +96,7 @@ static void* create_non_avatar_caller(void*)
 LLVoiceChannel* LLCallFloater::sCurrentVoiceChannel = NULL;
 
 LLCallFloater::LLCallFloater(const LLSD& key)
-: LLTransientDockableFloater(NULL, false, key)
+: LLFloater(key)
 , mSpeakerManager(NULL)
 , mParticipants(NULL)
 , mAvatarList(NULL)
@@ -113,10 +112,6 @@ LLCallFloater::LLCallFloater(const LLSD& key)
 
 	mFactoryMap["non_avatar_caller"] = LLCallbackMap(create_non_avatar_caller, NULL);
 	LLVoiceClient::instance().addObserver(this);
-	LLTransientFloaterMgr::getInstance()->addControlView(this);
-
-	// force docked state since this floater doesn't save it between recreations
-	setDocked(true);
 
 	// update the agent's name if display name setting change
 	LLAvatarNameCache::addUseDisplayNamesCallback(boost::bind(&LLCallFloater::updateAgentModeratorState, this));
@@ -139,13 +134,11 @@ LLCallFloater::~LLCallFloater()
 	{
 		LLVoiceClient::getInstance()->removeObserver(this);
 	}
-	LLTransientFloaterMgr::getInstance()->removeControlView(this);
 }
 
 // virtual
 BOOL LLCallFloater::postBuild()
 {
-	LLTransientDockableFloater::postBuild();
 	mAvatarList = getChild<LLAvatarList>("speakers_list");
 	mAvatarListRefreshConnection = mAvatarList->setRefreshCompleteCallback(boost::bind(&LLCallFloater::onAvatarListRefreshed, this));
 
@@ -154,12 +147,6 @@ BOOL LLCallFloater::postBuild()
 	mNonAvatarCaller = findChild<LLNonAvatarCaller>("non_avatar_caller");
 	mNonAvatarCaller->setVisible(FALSE);
 
-	LLView *anchor_panel = LLBottomTray::getInstance()->getChild<LLView>("speak_flyout_btn");
-
-	setDockControl(new LLDockControl(
-		anchor_panel, this,
-		getDockTongue(), LLDockControl::TOP));
-
 	initAgentData();
 
 	connectToChannel(LLVoiceChannel::getCurrentVoiceChannel());
@@ -204,13 +191,13 @@ void LLCallFloater::draw()
 	if (mParticipants)
 		mParticipants->updateRecentSpeakersOrder();
 
-	LLTransientDockableFloater::draw();
+	LLFloater::draw();
 }
 
 // virtual
 void LLCallFloater::setFocus( BOOL b )
 {
-	LLTransientDockableFloater::setFocus(b);
+	LLFloater::setFocus(b);
 
 	// Force using active floater transparency (STORM-730).
 	// We have to override setFocus() for LLCallFloater because selecting an item
diff --git a/indra/newview/llcallfloater.h b/indra/newview/llcallfloater.h
index 00a3f76e5679d53ee2908cff0ab9776ebe04e289..ea78cd53b70366d412ede768e188621ced16b9f1 100644
--- a/indra/newview/llcallfloater.h
+++ b/indra/newview/llcallfloater.h
@@ -52,7 +52,7 @@ class LLSpeakersDelayActionsStorage;
  * When the Resident is engaged in any chat except Nearby Chat, the Voice Control Panel
  * also provides a 'Leave Call' button to allow the Resident to leave that voice channel.
  */
-class LLCallFloater : public LLTransientDockableFloater, LLVoiceClientParticipantObserver
+class LLCallFloater : public LLFloater, LLVoiceClientParticipantObserver
 {
 public:
 
diff --git a/indra/newview/llfloateravatar.cpp b/indra/newview/llfloateravatar.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..bdc5b581a9f7ea21030145d7e1cca376b167bc8f
--- /dev/null
+++ b/indra/newview/llfloateravatar.cpp
@@ -0,0 +1,54 @@
+/** 
+ * @file llfloateravatar.h
+ * @author Leyla Farazha
+ * @brief floater for the avatar changer
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+/**
+ * Floater that appears when buying an object, giving a preview
+ * of its contents and their permissions.
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llfloateravatar.h"
+#include "lluictrlfactory.h"
+
+
+LLFloaterAvatar::LLFloaterAvatar(const LLSD& key)
+	:	LLFloater(key)
+{
+}
+
+LLFloaterAvatar::~LLFloaterAvatar()
+{
+}
+
+BOOL LLFloaterAvatar::postBuild()
+{
+	enableResizeCtrls(true, true, false);
+	return TRUE;
+}
+
+
diff --git a/indra/newview/llfloateravatar.h b/indra/newview/llfloateravatar.h
new file mode 100644
index 0000000000000000000000000000000000000000..cadc5e4028be24ed39f4bec922eaf4f3469bc81d
--- /dev/null
+++ b/indra/newview/llfloateravatar.h
@@ -0,0 +1,43 @@
+/** 
+ * @file llfloateravatar.h
+ * @author Leyla Farazha
+ * @brief floater for the avatar changer
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_FLOATER_AVATAR_H
+#define LL_FLOATER_AVATAR_H
+
+#include "llfloater.h"
+
+class LLFloaterAvatar:
+	public LLFloater
+{
+	friend class LLFloaterReg;
+private:
+	LLFloaterAvatar(const LLSD& key);
+	/*virtual*/	~LLFloaterAvatar();
+	/*virtual*/	BOOL postBuild();
+};
+
+#endif
diff --git a/indra/newview/llfloaterdestinations.cpp b/indra/newview/llfloaterdestinations.cpp
index 52d1f67c36979d79b90dc8dc6dc415bf4d5bb357..af21cb593ffef2a8527cf027d2e6760f3df03e4b 100644
--- a/indra/newview/llfloaterdestinations.cpp
+++ b/indra/newview/llfloaterdestinations.cpp
@@ -47,6 +47,7 @@ LLFloaterDestinations::~LLFloaterDestinations()
 
 BOOL LLFloaterDestinations::postBuild()
 {
+	enableResizeCtrls(true, true, false);
 	return TRUE;
 }
 
diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp
index cba4fafe42d9c307f76cbdd40b16a1123b58c38f..caa20b767c795388c9045b74c927dee37fce3a2f 100644
--- a/indra/newview/llnearbychatbar.cpp
+++ b/indra/newview/llnearbychatbar.cpp
@@ -452,6 +452,8 @@ BOOL LLNearbyChatBar::postBuild()
 
 	mExpandedHeight = getMinHeight() + EXPANDED_HEIGHT;
 
+	enableResizeCtrls(true, true, false);
+
 	return TRUE;
 }
 
@@ -462,6 +464,7 @@ void LLNearbyChatBar::applyRectControl()
 	{
 		getChildView("nearby_chat")->setVisible(true);
 		mExpandedHeight = getRect().getHeight();
+		enableResizeCtrls(true);
 	}
 }
 
@@ -707,13 +710,13 @@ void LLNearbyChatBar::onToggleNearbyChatPanel()
 		mExpandedHeight = getRect().getHeight();
 		nearby_chat->setVisible(FALSE);
 		reshape(getRect().getWidth(), getMinHeight());
-		mResizeHandle[0]->setMaxHeight(getMinHeight());
+		enableResizeCtrls(true, true, false);
 	}
 	else
 	{
 		nearby_chat->setVisible(TRUE);
 		reshape(getRect().getWidth(), mExpandedHeight);
-		mResizeHandle[0]->setMaxHeight(S32_MAX);
+		enableResizeCtrls(true);
 	}
 }
 
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index b0daf9f3c26a186e340cf23833238c0ddaf466cb..619d74e7acc88d702cd7011105ea3a0d549be0cc 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -37,6 +37,7 @@
 #include "llfloaterabout.h"
 #include "llfloateranimpreview.h"
 #include "llfloaterauction.h"
+#include "llfloateravatar.h"
 #include "llfloateravatarpicker.h"
 #include "llfloateravatartextures.h"
 #include "llfloaterbeacons.h"
@@ -168,7 +169,7 @@ void LLViewerFloaterReg::registerFloaters()
 	LLFloaterReg::add("about_land", "floater_about_land.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLand>);
 	LLFloaterReg::add("appearance", "floater_my_appearance.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);
 	LLFloaterReg::add("auction", "floater_auction.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAuction>);
-	LLFloaterReg::add("avatar", "floater_avatar.xml",  &LLFloaterReg::build<LLFloater>);
+	LLFloaterReg::add("avatar", "floater_avatar.xml",  (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAvatar>);
 	LLFloaterReg::add("avatar_picker", "floater_avatar_picker.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAvatarPicker>);
 	LLFloaterReg::add("avatar_textures", "floater_avatar_textures.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAvatarTextures>);
 
diff --git a/indra/newview/skins/default/xui/en/floater_avatar.xml b/indra/newview/skins/default/xui/en/floater_avatar.xml
index a0c1f4c02121bdb951954353654533fd05f42e14..666aa2d1641075fd502cf3c1ae2436d9a0a99f22 100644
--- a/indra/newview/skins/default/xui/en/floater_avatar.xml
+++ b/indra/newview/skins/default/xui/en/floater_avatar.xml
@@ -3,11 +3,9 @@
  legacy_header_height="225"
  can_minimize="true"
  can_close="true"
- user_resize="true"
  can_resize="true"
  min_height="230"
- min_width="455"
- max_height="230"
+ min_width="445"
  height="230"
  layout="topleft"
  name="Avatar"
@@ -19,7 +17,7 @@
     <web_browser
       top="25"
       height="200"
-      width="435"
+      width="445"
       follows="all"
       name="avatar_picker_contents"
       trusted_content="true"/>
diff --git a/indra/newview/skins/default/xui/en/floater_destinations.xml b/indra/newview/skins/default/xui/en/floater_destinations.xml
index 9dd9338f37d1b7448d5779cdfd2ba1f195707828..669b7eb15acba50787a8bec3d2cd26714c6134f2 100644
--- a/indra/newview/skins/default/xui/en/floater_destinations.xml
+++ b/indra/newview/skins/default/xui/en/floater_destinations.xml
@@ -7,7 +7,6 @@
  can_resize="true"
  min_height="230"
  min_width="525"
- max_height="230"
  height="230"
  layout="topleft"
  name="Destinations"
@@ -15,11 +14,11 @@
  help_topic="destinations"
  save_rect="true"
  title="Destinations"
- width="445">
+ width="525">
     <web_browser
       top="25"
       height="200"
-      width="435"
+      width="525"
       follows="all"
       name="destination_guide_contents"
       start_url="http://common-flash-secondlife-com.s3.amazonaws.com/viewer/v2.6/agni/guide.html"