diff --git a/src/apps/deskbar/BarApp.cpp b/src/apps/deskbar/BarApp.cpp
index 532e1bc..1e3113a 100644
--- a/src/apps/deskbar/BarApp.cpp
+++ b/src/apps/deskbar/BarApp.cpp
@@ -72,8 +72,8 @@ BList TBarApp::sSubscribers;
 const uint32 kShowBeMenu = 'BeMn';
 const uint32 kShowTeamMenu = 'TmMn';
 
-const BRect kIconSize(0.0f, 0.0f, 15.0f, 15.0f);
 
+const BRect kIconRect(0.0f, 0.0f, 15.0f, 15.0f);
 static const color_space kIconFormat = B_RGBA32;
 
 
@@ -119,6 +119,8 @@ TBarApp::TBarApp()
 	fBarWindow = new TBarWindow();
 	fBarWindow->Show();
 
+	fBarView = static_cast<TBarApp*>(be_app)->BarView();
+
 	// this messenger now targets the barview instead of the
 	// statusview so that all additions to the tray
 	// follow the same path
@@ -208,6 +210,8 @@ TBarApp::SaveSettings()
 			fSettings.superExpando);
 		storedSettings.AddBool("expandNewTeams",
 			fSettings.expandNewTeams);
+		storedSettings.AddInt32("iconSize",
+			fSettings.iconSize);
 		storedSettings.AddBool("autoRaise",
 			fSettings.autoRaise);
 		storedSettings.AddBool("recentAppsEnabled",
@@ -244,6 +248,7 @@ TBarApp::InitSettings()
 	settings.sortRunningApps = false;
 	settings.superExpando = false;
 	settings.expandNewTeams = false;
+	settings.iconSize = 1;
 	settings.autoRaise = false;
 	settings.recentAppsEnabled = true;
 	settings.recentDocsEnabled = true;
@@ -295,6 +300,8 @@ TBarApp::InitSettings()
 				&settings.superExpando);
 			storedSettings.FindBool("expandNewTeams",
 				&settings.expandNewTeams);
+			storedSettings.FindInt32("iconSize",
+				(int32*)&settings.iconSize);
 			storedSettings.FindBool("autoRaise",
 				&settings.autoRaise);
 			storedSettings.FindBool("recentAppsEnabled",
@@ -478,6 +485,26 @@ TBarApp::MessageReceived(BMessage* message)
 			break;
 		}
 
+		case kResizeTeamIcons:
+		{
+			int32 iconSize;
+
+			if (message->FindInt32("be:value", &iconSize) == B_OK)
+				fSettings.iconSize = iconSize;
+
+			if (fSettings.iconSize < 1)
+				fSettings.iconSize = 1;
+			else if (fSettings.iconSize > 4)
+				fSettings.iconSize = 4;
+
+			ResizeTeamIcons();
+
+			fBarWindow->Lock();
+			fBarView->UpdatePlacement();
+			fBarWindow->Unlock();
+			break;
+		}
+
 		case 'TASK':
 			fSwitcherMessenger.SendMessage(message);
 			break;
@@ -628,17 +655,14 @@ TBarApp::AddTeam(team_id team, uint32 flags, const char* sig, entry_ref* ref)
 		return;
 	}
 
-	BFile file(ref, B_READ_ONLY);
-	BAppFileInfo appMime(&file);
-
 	BarTeamInfo* barInfo = new BarTeamInfo(new BList(), flags, strdup(sig),
-		new BBitmap(kIconSize, kIconFormat), strdup(ref->name));
+		new BBitmap(kIconRect, kIconFormat), strdup(ref->name));
 
 	barInfo->teams->AddItem((void*)team);
-	if (appMime.GetIcon(barInfo->icon, B_MINI_ICON) != B_OK)
-		appMime.GetTrackerIcon(barInfo->icon, B_MINI_ICON);
 
 	sBarTeamInfoList.AddItem(barInfo);
+	BMessage message(kResizeTeamIcons);
+	be_app->PostMessage(&message);
 
 	int32 subsCount = sSubscribers.CountItems();
 	if (subsCount > 0) {
@@ -698,6 +722,28 @@ TBarApp::RemoveTeam(team_id team)
 
 
 void
+TBarApp::ResizeTeamIcons()
+{
+	BRect iconRect;
+
+	if (fBarView->Vertical())
+		iconRect = BRect(0, 0, ((fSettings.iconSize * 16) - 1),
+			((fSettings.iconSize * 16) - 1));
+	else
+		iconRect = kIconRect;
+
+	for (int32 i = 0; i < sBarTeamInfoList.CountItems(); i++) {
+		BarTeamInfo* barInfo = (BarTeamInfo*)sBarTeamInfoList.ItemAt(i);
+		if ((barInfo->flags & B_BACKGROUND_APP) == 0
+			&& strcasecmp(barInfo->sig, kDeskbarSignature) != 0) {
+			barInfo->icon = new BBitmap(iconRect, kIconFormat);
+			FetchAppIcon(barInfo->sig, barInfo->icon);
+		}
+	}
+}
+
+
+void
 TBarApp::ShowPreferencesWindow()
 {
 	if (fPreferencesWindow)
@@ -709,6 +755,25 @@ TBarApp::ShowPreferencesWindow()
 }
 
 
+void
+TBarApp::FetchAppIcon(const char* signature, BBitmap* icon)
+{
+	app_info appInfo;
+
+	if (be_roster->GetAppInfo(signature, &appInfo) == B_OK) {
+		BFile file(&appInfo.ref, B_READ_ONLY);
+		BAppFileInfo appMime(&file);
+		if (fBarView->Vertical() && icon->Bounds().IntegerHeight() > 15) {
+			if (appMime.GetIcon(icon, B_LARGE_ICON) != B_OK)
+				appMime.GetTrackerIcon(icon, B_LARGE_ICON);
+		} else {
+			if (appMime.GetIcon(icon, B_MINI_ICON) != B_OK)
+				appMime.GetTrackerIcon(icon, B_MINI_ICON);
+		}
+	}
+}
+
+
 //	#pragma mark -
 
 
diff --git a/src/apps/deskbar/BarApp.h b/src/apps/deskbar/BarApp.h
index 6f15838..3e9aefe 100644
--- a/src/apps/deskbar/BarApp.h
+++ b/src/apps/deskbar/BarApp.h
@@ -80,6 +80,7 @@ const uint32 kTrackerFirst = 'TkFt';
 const uint32 kSortRunningApps = 'SAps';
 const uint32 kSuperExpando = 'SprE';
 const uint32 kExpandNewTeams = 'ExTm';
+const uint32 kResizeTeamIcons = 'RTIs';
 const uint32 kAutoRaise = 'AtRs';
 const uint32 kRestartTracker = 'Trak';
 
@@ -109,6 +110,7 @@ struct desk_settings {
 	bool sortRunningApps;
 	bool superExpando;
 	bool expandNewTeams;
+	int32 iconSize;
 	bool autoRaise;
 	bool recentAppsEnabled;
 	bool recentDocsEnabled;
@@ -139,6 +141,7 @@ class TBarApp : public BApplication {
 
 		static void Subscribe(const BMessenger &subscriber, BList*);
 		static void Unsubscribe(const BMessenger &subscriber);
+		void ResizeTeamIcons();
 
 	private:
 		void AddTeam(team_id team, uint32 flags, const char	*sig, entry_ref	*);
@@ -148,8 +151,10 @@ class TBarApp : public BApplication {
 		void SaveSettings();
 
 		void ShowPreferencesWindow();
+		void FetchAppIcon(const char* signature, BBitmap* icon);
 
 		TBarWindow* fBarWindow;
+		TBarView* fBarView;
 		BMessenger fSwitcherMessenger;
 		BMessenger fStatusViewMessenger;
 		BFile* fSettingsFile;
diff --git a/src/apps/deskbar/BarView.cpp b/src/apps/deskbar/BarView.cpp
index f113e6a..92c9c0a 100644
--- a/src/apps/deskbar/BarView.cpp
+++ b/src/apps/deskbar/BarView.cpp
@@ -439,6 +439,10 @@ TBarView::ChangeState(int32 state, bool vertical, bool left, bool top)
 	fLeft = left;
 	fTop = top;
 
+	// If switching vertical orientation resize the icons
+	if (vertSwap)
+		static_cast<TBarApp*>(be_app)->ResizeTeamIcons();
+
 	BRect screenFrame = (BScreen(Window())).Frame();
 
 	PlaceBeMenu();
diff --git a/src/apps/deskbar/PreferencesWindow.cpp b/src/apps/deskbar/PreferencesWindow.cpp
index e8fdf07..54ce455 100644
--- a/src/apps/deskbar/PreferencesWindow.cpp
+++ b/src/apps/deskbar/PreferencesWindow.cpp
@@ -17,6 +17,7 @@
 #include <OpenWithTracker.h>
 #include <RadioButton.h>
 #include <SeparatorView.h>
+#include <Slider.h>
 
 #include <ctype.h>
 
@@ -57,6 +58,12 @@ PreferencesWindow::PreferencesWindow(BRect frame)
 		new BMessage(kSuperExpando));
 	fAppsExpandNew = new BCheckBox(B_TRANSLATE("Expand new applications"),
 		new BMessage(kExpandNewTeams));
+	fAppsIconSizeSlider = new BSlider("icon_size", B_TRANSLATE("Icon size"), 
+		new BMessage(kResizeTeamIcons), 1, 4, B_HORIZONTAL);
+	fAppsIconSizeSlider->SetHashMarks(B_HASH_MARKS_BOTTOM);
+	fAppsIconSizeSlider->SetHashMarkCount(4);
+	fAppsIconSizeSlider->SetLimitLabels(B_TRANSLATE("Small"), 
+		B_TRANSLATE("Large"));
 
 	fClockSeconds = new BCheckBox(B_TRANSLATE("Show seconds"),
 		new BMessage(kShowSeconds));
@@ -89,6 +96,7 @@ PreferencesWindow::PreferencesWindow(BRect frame)
 	fAppsSortTrackerFirst->SetValue(appSettings->trackerAlwaysFirst);
 	fAppsShowExpanders->SetValue(appSettings->superExpando);
 	fAppsExpandNew->SetValue(appSettings->expandNewTeams);
+	fAppsIconSizeSlider->SetValue(appSettings->iconSize);
 
 	int32 docCount = appSettings->recentDocsCount;
 	int32 appCount = appSettings->recentAppsCount;
@@ -131,6 +139,7 @@ PreferencesWindow::PreferencesWindow(BRect frame)
 	fAppsSort->SetTarget(be_app);
 	fAppsSortTrackerFirst->SetTarget(be_app);
 	fAppsExpandNew->SetTarget(be_app);
+	fAppsIconSizeSlider->SetTarget(be_app);
 
 	fClockSeconds->SetTarget(replicantTray);
 
@@ -179,6 +188,7 @@ PreferencesWindow::PreferencesWindow(BRect frame)
 				.SetInsets(20, 0, 0, 0)
 				.Add(fAppsExpandNew)
 				.End()
+			.Add(fAppsIconSizeSlider)
 			.AddGlue()
 			.SetInsets(10, 10, 10, 10)
 			.End()
diff --git a/src/apps/deskbar/PreferencesWindow.h b/src/apps/deskbar/PreferencesWindow.h
index 77f641b..415e813 100644
--- a/src/apps/deskbar/PreferencesWindow.h
+++ b/src/apps/deskbar/PreferencesWindow.h
@@ -10,6 +10,7 @@
 #include <Button.h>
 #include <CheckBox.h>
 #include <RadioButton.h>
+#include <Slider.h>
 #include <StringView.h>
 #include <TextControl.h>
 #include <Window.h>
@@ -51,6 +52,7 @@ private:
 			BCheckBox*		fAppsSortTrackerFirst;
 			BCheckBox*		fAppsShowExpanders;
 			BCheckBox*		fAppsExpandNew;
+			BSlider*		fAppsIconSizeSlider;
 
 			BCheckBox*		fClockSeconds;
 
