                 return
             }
 
-            NSColor.whiteColor().setFill()
-            NSRectFill(NSRect(origin: CGPoint(), size: size))
-
-            CGContextScaleCTM(context, size.width / CGFloat(currentSize.0), size.height / CGFloat(currentSize.1))
+            CGContextClearRect(context, CGRect(origin: CGPoint(), size: size))
 
 
-            NSColor.grayColor().setFill()
-            NSColor.grayColor().set()
+            CGContextTranslateCTM(context,
+                (size.width -  CGFloat(currentScaled.0)) / 2,
+                (size.height - CGFloat(currentScaled.1)) / 2)
+            CGContextScaleCTM(context, CGFloat(currentScaled.0 / currentSize.0), CGFloat(currentScaled.1 / currentSize.1))
+
+
+            CGContextSetRGBFillColor(context, 1, 1, 1, 1)
+            CGContextFillRect(context, CGRect(x: 0, y: 0, width: currentSize.0, height: currentSize.1))
+
+            CGContextSetRGBFillColor(context, 0.5,0.5,0.5,1)
+            CGContextSetRGBStrokeColor(context, 0.5,0.5,0.5,1)
+
             CGContextSetLineWidth(context, 9)
             for path in paths {
                 path.draw(context)

                    continue
                }
                if isGuide {
                    NSColor.cyanColor().setFill()
                    NSColor.cyanColor().set()
                } else if isCurrent {
                    NSColor.blueColor().setFill()
                    NSColor.blueColor().set()
                } else {
                    NSColor.grayColor().setFill()
                    NSColor.grayColor().set()
                }

                path.draw(context)

        errors.removeAll()
        instructions.removeAll()

        currentSize = (Double(size.0), Double(size.1))

        let scale = min(Double(maxSize.0)/Double(currentSize.0),
            Double(maxSize.1)/Double(currentSize.1))

        currentScaled = (
            scale * Double(size.0),
            scale * Double(size.1)
        )

    }

    public func runtimeFinishEvaluation(runtime: Runtime) {
