diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 3249d0b31f4bc9d47e7250dd2cf4a0f41fbc38a3..41f2ff29e60cde0dbd097355991c30a09ca8d466 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -2300,7 +2300,7 @@ class LLLibraryOutfitsCopyDone: public LLInventoryCallback
 	
 	virtual ~LLLibraryOutfitsCopyDone()
 	{
-		if (!!LLApp::isExiting() && mLibraryOutfitsFetcher)
+		if (!LLApp::isExiting() && mLibraryOutfitsFetcher)
 		{
 			gInventory.addObserver(mLibraryOutfitsFetcher);
 			mLibraryOutfitsFetcher->done();
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index fa1bfdb5ab85ed9617a38c318fe3bd3ae4fdad72..585d42f66d1251a2656d67986967e0e46cf0753d 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -279,7 +279,7 @@ class LLUpdateAppearanceOnDestroy: public LLInventoryCallback
 
 	virtual ~LLUpdateAppearanceOnDestroy()
 	{
-		if (!!LLApp::isExiting())
+		if (!LLApp::isExiting())
 		{
 			LLAppearanceManager::instance().updateAppearanceFromCOF();
 		}
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 522adc05ced2b34596aa580571b6c58b8da80a2a..b5cd5b73ce42f8df5a31c7c427485463bbbeea28 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -1845,21 +1845,6 @@ bool idle_startup()
 	{
 		F32 timeout_frac = timeout.getElapsedTimeF32()/PRECACHING_DELAY;
 
-		// We now have an inventory skeleton, so if this is a user's first
-		// login, we can start setting up their clothing and avatar 
-		// appearance.  This helps to avoid the generic "Ruth" avatar in
-		// the orientation island tutorial experience. JC
-		if (gAgent.isFirstLogin()
-			&& !sInitialOutfit.empty()    // registration set up an outfit
-			&& !sInitialOutfitGender.empty() // and a gender
-			&& gAgent.getAvatarObject()	  // can't wear clothes without object
-			&& !gAgent.isGenderChosen() ) // nothing already loading
-		{
-			// Start loading the wearables, textures, gestures
-			LLStartUp::loadInitialOutfit( sInitialOutfit, sInitialOutfitGender );
-		}
-
-
 		// We now have an inventory skeleton, so if this is a user's first
 		// login, we can start setting up their clothing and avatar 
 		// appearance.  This helps to avoid the generic "Ruth" avatar in
@@ -2536,6 +2521,11 @@ bool callback_choose_gender(const LLSD& notification, const LLSD& response)
 void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,
 								   const std::string& gender_name )
 {
+	// Not going through the processAgentInitialWearables path, so need to set this here.
+	LLAppearanceManager::instance().setAttachmentInvLinkEnable(true);
+	// Initiate creation of COF, since we're also bypassing that.
+	gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
+	
 	S32 gender = 0;
 	std::string gestures;
 	if (gender_name == "male")
@@ -2554,7 +2544,7 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,
 	LLInventoryModel::cat_array_t cat_array;
 	LLInventoryModel::item_array_t item_array;
 	LLNameCategoryCollector has_name(outfit_folder_name);
-	gInventory.collectDescendentsIf(LLUUID::null,
+	gInventory.collectDescendentsIf(gInventory.getLibraryRootFolderID(),
 									cat_array,
 									item_array,
 									LLInventoryModel::EXCLUDE_TRASH,
@@ -2565,7 +2555,10 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,
 	}
 	else
 	{
-		LLAppearanceManager::instance().wearOutfitByName(outfit_folder_name);
+		LLInventoryCategory* cat = cat_array.get(0);
+		bool do_copy = true;
+		bool do_append = false;
+		LLAppearanceManager::instance().wearInventoryCategory(cat, do_copy, do_append);
 	}
 	LLAppearanceManager::instance().wearOutfitByName(gestures);
 	LLAppearanceManager::instance().wearOutfitByName(COMMON_GESTURES_FOLDER);