diff --git a/engines/director/frame.cpp b/engines/director/frame.cpp
index 4bae61f..91ca84d 100644
--- a/engines/director/frame.cpp
+++ b/engines/director/frame.cpp
@@ -571,11 +571,16 @@ Image::ImageDecoder *Frame::getImageFrom(uint16 spriteId) {
 			if (!c)
 				debugC(4, kDebugImages, "%d, %d, %d", imgId, w, h);
 
-			if (bc->flags & 0x20) {
-				int w1 = w + 8 - w % 8 + 8;
+			if (true || bc->flags & 0x20) {
+				int w1 = w + 8 - w % 8;
+//if (imgId == 1065 || imgId == 1066 || imgId == 1110) w1 -= 8;
 				debugC(3, kDebugImages, "Disabling compression for %d: %d x %d", imgId, w1, h);
-
-				img = new BITDDecoder(w1, h, false);
+				if (pic->size() * 8 == w1 * h)
+					img = new BITDDecoder(w1, h, false);
+				else if (pic->size() * 8 == (w1 + 8) * h)
+					img = new BITDDecoder(w1 + 8, h, false);
+				else
+					img = new BITDDecoder(w /*+ 8*/, h, true);
 			} else {
 				img = new BITDDecoder(w, h, true);
 			}
diff --git a/engines/director/images.cpp b/engines/director/images.cpp
index b763603..85ea979 100644
--- a/engines/director/images.cpp
+++ b/engines/director/images.cpp
@@ -140,7 +140,7 @@ bool BITDDecoder::loadStream(Common::SeekableReadStream &stream) {
 	if (!_comp) {
 		debugC(3, kDebugImages, "Skipping compression");
 		for (y = 0; y < _surface->h; y++) {
-			for (x = 0; x < _surface->w; x++) {
+			for (x = 0; x < _surface->w; ) {
 				byte color = stream.readByte();
 				for (int c = 0; c < 8; c++)
 					*((byte *)_surface->getBasePtr(x++, y)) = (color & (1 << (7 - c))) ? 0 : 0xff;
