diff --git a/src/add-ons/tracker/zipomatic/ZipOMaticActivity.cpp b/src/add-ons/tracker/zipomatic/ZipOMaticActivity.cpp
index 5f8ec2b5ee..3c4bf08754 100644
--- a/src/add-ons/tracker/zipomatic/ZipOMaticActivity.cpp
+++ b/src/add-ons/tracker/zipomatic/ZipOMaticActivity.cpp
@@ -5,6 +5,9 @@
 #include "ZipOMaticActivity.h"
 
 
+#include <stdio.h>
+
+
 Activity::Activity(BRect frame, const char* name, uint32 resizingMode,
 	uint32 flags)
 	:
@@ -12,8 +15,6 @@ Activity::Activity(BRect frame, const char* name, uint32 resizingMode,
 	fIsRunning(false),
 	fBitmap(NULL)
 {
-	SetViewColor(B_TRANSPARENT_COLOR);
-	
 	fPattern.data[0] = 0x0f;
 	fPattern.data[1] = 0x1e;
 	fPattern.data[2] = 0x3c;
@@ -22,8 +23,6 @@ Activity::Activity(BRect frame, const char* name, uint32 resizingMode,
 	fPattern.data[5] = 0xe1;
 	fPattern.data[6] = 0xc3;
 	fPattern.data[7] = 0x87;
-	
-	_CreateBitmap();
 };
 
 
@@ -33,6 +32,14 @@ Activity::~Activity()
 }
 
 
+void 
+Activity::AllAttached()
+{
+	SetViewColor(B_TRANSPARENT_COLOR);
+	_CreateBitmap();
+}
+
+
 void 
 Activity::Start()
 {
@@ -74,8 +81,8 @@ Activity::Pulse()
 {
 	uchar tmp = fPattern.data[7];
 
-	for (int j = 7;  j > 0;  --j)
-		fPattern.data[j]  =  fPattern.data[j-1];
+	for (int j = 7; j > 0; --j)
+		fPattern.data[j] = fPattern.data[j-1];
 	
 	fPattern.data[0] = tmp;
 	
@@ -86,6 +93,18 @@ Activity::Pulse()
 void 
 Activity::Draw(BRect rect)
 {
+	BRect viewRect = Bounds();
+	BRect bitmapRect = fBitmap->Bounds();
+
+	if (bitmapRect != viewRect) {
+		printf("Activity::Draw(): bitmapRect != viewRect\n");
+		bitmapRect.PrintToStream();
+		viewRect.PrintToStream();
+
+		delete fBitmap;
+		_CreateBitmap();
+	}
+
 	_DrawOnBitmap(IsRunning());
 	SetDrawingMode(B_OP_COPY);
 	DrawBitmap(fBitmap);
@@ -97,15 +116,15 @@ Activity::_DrawOnBitmap(bool running)
 {
 	if (fBitmap->Lock())
 	{
-		BRect rect  =  fBitmap->Bounds();
+		BRect rect = fBitmap->Bounds();
 
 		fBitmapView->SetDrawingMode(B_OP_COPY);
 	
-		rgb_color  color;
-		color.red    =  0;
-		color.green  =  0;
-		color.blue   =  0;
-		color.alpha  =  255;
+		rgb_color color;
+		color.red = 0;
+		color.green = 0;
+		color.blue = 0;
+		color.alpha = 255;
 		
 		if (running)
 			color.blue = 200;
@@ -119,13 +138,13 @@ Activity::_DrawOnBitmap(bool running)
 		// draw frame
 
 		// left
-		color.red    =  150;
-		color.green  =  150;
-		color.blue   =  150;
+		color.red = 150;
+		color.green = 150;
+		color.blue = 150;
 		fBitmapView->SetHighColor(color);
 		fBitmapView->SetDrawingMode(B_OP_OVER);
-		BPoint  point_a  =  fBitmap->Bounds().LeftTop();
-		BPoint  point_b  =  fBitmap->Bounds().LeftBottom();
+		BPoint point_a = fBitmap->Bounds().LeftTop();
+		BPoint point_b = fBitmap->Bounds().LeftBottom();
 		point_b.y -= 1;
 		fBitmapView->StrokeLine(point_a, point_b);
 		point_a.x += 1;
@@ -134,8 +153,8 @@ Activity::_DrawOnBitmap(bool running)
 		fBitmapView->StrokeLine(point_a, point_b);
 
 		// top
-		point_a  =  fBitmap->Bounds().LeftTop();
-		point_b  =  fBitmap->Bounds().RightTop();
+		point_a = fBitmap->Bounds().LeftTop();
+		point_b = fBitmap->Bounds().RightTop();
 		point_b.x -= 1;
 		fBitmapView->StrokeLine(point_a, point_b);
 		point_a.y += 1;
@@ -144,12 +163,12 @@ Activity::_DrawOnBitmap(bool running)
 		fBitmapView->StrokeLine(point_a, point_b);
 
 		// right
-		color.red    =  255;
-		color.green  =  255;
-		color.blue   =  255;
+		color.red = 255;
+		color.green = 255;
+		color.blue = 255;
 		fBitmapView->SetHighColor(color);
-		point_a  =  fBitmap->Bounds().RightTop();
-		point_b  =  fBitmap->Bounds().RightBottom();
+		point_a = fBitmap->Bounds().RightTop();
+		point_b = fBitmap->Bounds().RightBottom();
 		fBitmapView->StrokeLine(point_a, point_b);
 		point_a.y += 1;
 		point_a.x -= 1;
@@ -157,8 +176,8 @@ Activity::_DrawOnBitmap(bool running)
 		fBitmapView->StrokeLine(point_a, point_b);
 
 		// bottom
-		point_a  =  fBitmap->Bounds().LeftBottom();
-		point_b  =  fBitmap->Bounds().RightBottom();
+		point_a = fBitmap->Bounds().LeftBottom();
+		point_b = fBitmap->Bounds().RightBottom();
 		fBitmapView->StrokeLine(point_a, point_b);
 		point_a.x += 1;
 		point_a.y -= 1;
@@ -166,9 +185,9 @@ Activity::_DrawOnBitmap(bool running)
 		fBitmapView->StrokeLine(point_a, point_b);		
 		
 		// some blending
-		color.red    =  150;
-		color.green  =  150;
-		color.blue   =  150;
+		color.red = 150;
+		color.green = 150;
+		color.blue = 150;
 		fBitmapView->SetHighColor(color);
 		fBitmapView->SetDrawingMode(B_OP_SUBTRACT);
 		fBitmapView->StrokeRect(rect);
@@ -198,9 +217,9 @@ Activity::_DrawOnBitmap(bool running)
 void
 Activity::_LightenBitmapHighColor(rgb_color* color)
 {
-	color->red    -=  30;
-	color->green  -=  30;
-	color->blue   -=  30;
+	color->red -= 30;
+	color->green -= 30;
+	color->blue -= 30;
 	
 	fBitmapView->SetHighColor(*color);
 }
diff --git a/src/add-ons/tracker/zipomatic/ZipOMaticActivity.h b/src/add-ons/tracker/zipomatic/ZipOMaticActivity.h
index 7fd4ac9bf4..a988e918ff 100644
--- a/src/add-ons/tracker/zipomatic/ZipOMaticActivity.h
+++ b/src/add-ons/tracker/zipomatic/ZipOMaticActivity.h
@@ -20,6 +20,7 @@ public:
 			void			Pause();
 			void			Stop();
 			bool			IsRunning();
+	virtual	void			AllAttached();
 	virtual	void			Pulse();
 	virtual	void			Draw(BRect draw);
 	virtual	void			FrameResized(float width, float height);
diff --git a/src/add-ons/tracker/zipomatic/ZipOMaticWindow.cpp b/src/add-ons/tracker/zipomatic/ZipOMaticWindow.cpp
index 816f9dec64..d7fca5d652 100644
--- a/src/add-ons/tracker/zipomatic/ZipOMaticWindow.cpp
+++ b/src/add-ons/tracker/zipomatic/ZipOMaticWindow.cpp
@@ -61,14 +61,15 @@ ZippoWindow::ZippoWindow(BRect frame, BMessage* refs)
 
 	BSeparatorView* separator = new BSeparatorView(B_HORIZONTAL);
 
-	SetLayout(new BGroupLayout(B_VERTICAL));
-	BLayoutBuilder::Group<>(this, B_VERTICAL, 10)
-		.Add(fActivityView)
-		.Add(fArchiveNameView)
-		.Add(fZipOutputView)
-		.Add(separator)
-		.Add(fStopButton)
-		.SetInsets(14, 14, 14, 14)
+	BLayoutBuilder::Group<>(this)
+		.AddGroup(B_VERTICAL, 10)
+			.Add(fActivityView)
+			.Add(fArchiveNameView)
+			.Add(fZipOutputView)
+			.Add(separator)
+			.Add(fStopButton)
+			.SetInsets(14, 14, 14, 14)
+			.End()
 		.End();
 
 	if (refs != NULL) {
@@ -266,11 +267,3 @@ ZippoWindow::_CloseWindowOrKeepOpen()
 		PostMessage(B_QUIT_REQUESTED);
 }
 
-
-void
-ZippoWindow::Zoom(BPoint origin, float width, float height)
-{
-	// TODO: Think about removing this method when 
-	// zipomatic's new layout code works right.
-}
-
diff --git a/src/add-ons/tracker/zipomatic/ZipOMaticWindow.h b/src/add-ons/tracker/zipomatic/ZipOMaticWindow.h
index 7507e15425..0917e731e3 100644
--- a/src/add-ons/tracker/zipomatic/ZipOMaticWindow.h
+++ b/src/add-ons/tracker/zipomatic/ZipOMaticWindow.h
@@ -18,7 +18,6 @@ public:
 							
 	virtual	void			MessageReceived(BMessage* message);
 	virtual	bool			QuitRequested();
-	virtual	void			Zoom(BPoint origin, float width, float height);
 	
 			bool			IsZipping();
 			void			StopZipping();