diff --git a/xtrn/fatfish/INSTALL.txt b/xtrn/fatfish/INSTALL.txt
index 9b34885738489f9e7db9d86fa8d860c9b80775d4..b1080961219e173ca4b184660a9a7934fedbe9ac 100644
--- a/xtrn/fatfish/INSTALL.txt
+++ b/xtrn/fatfish/INSTALL.txt
@@ -33,12 +33,6 @@ Installation
 ------------
 1. Get the sources. They can be found on cvs.synchro.net, the official Synchronet repository.
 
-   Git it:
-     For the latest code/unstable branch, you can click the first 'snapshot' link here:
-       http://git.poorcoding.com/?p=fatfish
-     This will get the latest snapshot of the source from the repository in .tgz format.
-     Extract and put the 'fatfish' folder into /sbbs/xtrn.
-
 2. Configure the door in SCFG, if not already done:
 	╔[■][?]════════════════════════════════════════════════════╗
 	║                         Fat Fish                         ║
@@ -76,6 +70,24 @@ Instructions
 ------------
 Please see the README.txt document for in-game instructions.
 
+---------------
+Troubleshooting
+---------------
+
+Black areas on screen:
+----------------------
+FatFish uses some smoothing routings to make things look awesome. Unfortunately, this causes issues on some BBSes. Confirm that you get black lines resembling this screenshot:
+
+
+In order to fix this, we must disable smoothing. Edit 'fatfish.js' and modify the RENDER_MODE to 0:
+
+/* Default: 1.
+     Set to 0 if you see black lines render on the map.
+	 We will fallback to an uglier, safer render method. :|
+	 */
+var RENDER_MODE = 0;
+
+
 ------------------------
 Hosting the JSON Service
 ------------------------
diff --git a/xtrn/fatfish/fatfish.js b/xtrn/fatfish/fatfish.js
index f6fdde17eb94bef95b5c4c364d39b24b24dd6eec..c568f92b0d8210818f1bcdc2345ba3cbb499b1ca 100644
--- a/xtrn/fatfish/fatfish.js
+++ b/xtrn/fatfish/fatfish.js
@@ -24,6 +24,12 @@ var USING_JSON = false;
 /* Set to true to use Global High Scores server (FatCats BBS) -- recommended by author. */
 var USING_GLOBAL_SERVER = false;
 
+/* Default: 1.
+     Set to 0 if you see black lines render on the map.
+	 We will fallback to an uglier, safer render method. :|
+	 */
+var RENDER_MODE = 1;
+
 load("sbbsdefs.js");
 load("event-timer.js");
 load("json-client.js");
@@ -102,11 +108,28 @@ shopFrame.clear(BG_LIGHTGRAY);
 /* start this shit up */
 console.writeln("Starting FatFish:");
 
-/* Smooth water rendering? */
-var smoothing = true;
-
-/* Smooth land rendering? */
-var smoothing_land = true;
+/* Smooth water rendering?
+     Set to false if you see black lines render on the map.
+	 We will fallback to an uglier, safer render method. :|
+	 */
+var smoothing;
+
+/* Smooth land rendering? 
+     Set to false if you see black lines render on the map.
+	 We will fallback to an uglier, safer render method. :|
+	 */
+var smoothing_land;
+
+switch (RENDER_MODE) {
+	case 0:
+		smoothing = false;
+		smoothing_land = false;
+		break;
+	case 1:
+		smoothing = true;
+		smoothing_land = true;
+		break;
+}
 
 /* Boat object */
 var boat = { x: 0, y: 0 };
@@ -848,22 +871,19 @@ function Terrain(d) {
         case -3:
         case -2:
             // Deeper  water.
-            this.texture = ANSI.UNBOLD + ANSI.BG_BLUE + " ";
+            this.texture = ANSI.BG_BLUE + " ";
 
             if (smoothing) {
                 rm2 = random(3);
                 switch (rm2) {
                     // BG strong < \xB0\xB1\xB2\xDB > FG strong
                     case 0:
-                        //log(Math.floor(this.depth));
                         if (Math.floor(this.depth) <= -3.0) {
                             this.texture = ANSI.UNBOLD + ANSI.FG_BLACK + ANSI.BG_BLUE + "\xB0";
                         }
                         break;
                         
                     case 1:
-                        // This case appears to break on some systems?
-                        // TODO: alternate smoothing rendering engine.
                         if (Math.floor(this.depth) > -1.5) {
                             this.texture = ANSI.BOLD + ANSI.FG_CYAN + ANSI.BG_BLUE + "\xB0";
                         } else {
@@ -884,44 +904,31 @@ function Terrain(d) {
 
         case -1:
             // Deep water.
-            this.texture = ANSI.UNBOLD + ANSI.BG_BLUE + " ";
+            this.texture = ANSI.BG_CYAN + " ";
 
             if (smoothing) {
                 rm1 = random(5);
 
                 switch (rm1) {
-                    // \xB0\xB1\xB2\xDB
                     case 0:
                         this.texture = ANSI.UNBOLD + ANSI.FG_CYAN + ANSI.BG_BLUE + "\xB2";
                         break;
                     case 1:
-                        this.texture = ANSI.UNBOLD + ANSI.FG_CYAN + ANSI.BG_BLUE + "\xB1";
+                    	this.texture = ANSI.UNBOLD + ANSI.FG_CYAN + ANSI.BG_BLUE + "\xB1";
                         break;
                     case 2:
-                        // Definitely causes issues on some BBSes.
                         this.texture = ANSI.UNBOLD + ANSI.FG_CYAN + ANSI.BG_BLUE + "\xB0";                        
-                        // TODO: alternate smoothing rendering engine.
-                        //this.texture = ANSI.FG_CYAN + ANSI.BG_BLUE + "\xB0";
                         break;
                     case 3:
                         if (this.depth > -0.5) {
-                            this.texture = ANSI.BOLD + ANSI.FG_GREEN + ANSI.BG_BLUE + "\xB2";
-                            // TODO: alternate smoothing rendering engine.
-                            //this.texture = ANSI.FG_GREEN + ANSI.BG_BLUE + "\xB1";
+                            this.texture = ANSI.FG_GREEN + ANSI.BG_BLUE + "\xB1";
                         } else {                            
-                            // Definitely causes issues on some BBSes.
                             this.texture = ANSI.BOLD + ANSI.FG_GREEN + ANSI.BG_BLUE + "\xB0";
-                            // TODO: alternate smoothing rendering engine.
-                            // Bugfix?                            
-                            //this.texture = ANSI.FG_BLUE + ANSI.BG_GREEN + "\xB2";
                         }
                         break;
                     case 4:
                         // Definitely causes issues on some BBSes.
                         this.texture = ANSI.BOLD + ANSI.FG_CYAN + ANSI.BG_BLUE + "\xB0";
-                        // TODO: alternate smoothing rendering engine.
-                        // Bugfix?
-                        //this.texture = ANSI.BOLD + ANSI.FG_CYAN + ANSI.BG_BLUE + "\xB1";
                         break;
                 }
             }
@@ -930,7 +937,7 @@ function Terrain(d) {
 
         case 0:
             // Water.
-            this.texture = ANSI.UNBOLD + ANSI.BG_CYAN + " ";
+            this.texture = ANSI.BG_CYAN + " ";
 
             if (smoothing) {
 
@@ -942,19 +949,19 @@ function Terrain(d) {
                         this.texture = ANSI.BOLD + ANSI.FG_CYAN + ANSI.BG_CYAN + "\xB0";
                         break;
                     case 1:
-                        this.texture = ANSI.BOLD + ANSI.FG_CYAN + ANSI.BG_CYAN + "\xB1";
+                    	this.texture = ANSI.BOLD + ANSI.FG_CYAN + ANSI.BG_CYAN + "\xB1";
                         break;
                     case 2:
                         this.texture = ANSI.UNBOLD + ANSI.FG_BLUE + ANSI.BG_CYAN + "\xB0";
                         break;
-                    case 3:
-                        this.texture = ANSI.UNBOLD + ANSI.FG_BLUE + ANSI.BG_CYAN + "\xB1";
+                	case 3:
+                		this.texture = ANSI.UNBOLD + ANSI.FG_BLUE + ANSI.BG_CYAN + "\xB1";
                         break;
                     case 4:
                         this.texture = ANSI.BOLD + ANSI.FG_GREEN + ANSI.BG_CYAN + "\xB0";
                         break;
                     case 5:
-                        this.texture = ANSI.BOLD + ANSI.FG_GREEN + ANSI.BG_CYAN + "\xB1";
+                    	this.texture = ANSI.BOLD + ANSI.FG_GREEN + ANSI.BG_CYAN + "\xB1";
                         break;
                 }
             }
@@ -963,24 +970,20 @@ function Terrain(d) {
 
         case 1:
             // Sand.
-            this.texture = ANSI.BOLD + ANSI.FG_YELLOW + "\xDB";
+        	this.texture = ANSI.BG_YELLOW + " ";
             
             if (smoothing_land) {
                 r1 = random(3);
 
                 switch (r1) {
-                    // \xB0\xB1\xB2\xDB
                     case 0:
                         this.texture = ANSI.BOLD + ANSI.FG_YELLOW + ANSI.BG_YELLOW + "\xB2";
                         break;
                     case 1:
-                        this.texture = ANSI.BOLD + ANSI.FG_YELLOW + ANSI.BG_YELLOW + "\xB1";
+                    	this.texture = ANSI.BOLD + ANSI.FG_YELLOW + ANSI.BG_YELLOW + "\xB1";
                         break;
                     case 2:
                         this.texture = ANSI.BOLD + ANSI.FG_GREEN + ANSI.BG_YELLOW + "\xB1";
-                        // TODO: alternate smoothing rendering engine.
-                        // Bugfix?
-                        //this.texture = ANSI.FG_GREEN + ANSI.BG_YELLOW + "\xB1";
                         break;
                 }
             }
@@ -989,7 +992,7 @@ function Terrain(d) {
 
         case 2:
             // Grassland.
-            this.texture = ANSI.UNBOLD + ANSI.FG_GREEN + ANSI.BG_GREEN + " ";
+            this.texture = ANSI.BG_GREEN + " ";
             
             c = " ";
             
@@ -997,7 +1000,6 @@ function Terrain(d) {
                 r2 = random(3);
 
                 switch (r2) {
-                    // BG strong < \xB0\xB1\xB2\xDB > FG strong
                     case 0:
                         this.texture = ANSI.BOLD + ANSI.FG_GREEN + ANSI.BG_GREEN + "\xB0";
                         break;
@@ -1027,12 +1029,25 @@ function Terrain(d) {
 
             // Depth > 2
             // Forest            
-            var tex = '^';
-            this.texture = ANSI.BOLD + ANSI.FG_GREEN + ANSI.BG_GREEN + tex;
+        	var tex = '^';
+        	r3 = random(3);
+        	switch (r3) {
+        		case 0:
+        			this.texture = ANSI.FG_YELLOW + ANSI.BG_GREEN + tex;
+        			break;
+        		case 1:
+        			this.texture = ANSI.FG_WHITE + ANSI.BG_GREEN + tex;
+        			break;
+        		case 2:
+        			this.texture = ANSI.FG_YELLOW + ANSI.BG_GREEN + ';';
+        			break;
+        	}
+            
+            
             
-            c = " ";
 
             if (smoothing_land) {
+            	//c = " ";
                 r3 = random(3);
                 switch (r3) {
                     case 0: