             borderWidth: 0.5,
             highlightedBorderWidth: 4,
             majorGridlineColor: NSColor(white: 0.3, alpha: 1),
-            majorGridlineWidth: 0.75,
+            majorGridlineParams: LineParams(lineWidth: 0.75),
             minorGridlineColor: NSColor(white: 0.3, alpha: 1),
-            minorGridlineWidth: 0.5,
-            scaleFont: NSFont(name: "Helvetica-Light", size: 12)!,
+            minorGridlineParams: LineParams(lineWidth: 0.5, dash: [6, 3]),
+            scaleFont: NSFont(name: "Helvetica-Light", size: 10)!,
             legendFont: NSFont(name: "Menlo", size: 12)!,
             legendColor: NSColor.black,
             legendPadding: 6,
-            lineWidth: 4,
+            lineParams: LineParams(lineWidth: 4),
             shadowRadius: 0,
             xPadding: 6)
 

            previousFrame = frame
        }

        // Draw vertical grid labels
        previousFrame = .null
        for gridline in verticalGridlines {
            guard let label = gridline.label else { continue }
            let xMid = chartBounds.minX + gridline.position * chartBounds.width
            let yTop = chartBounds.minY - 3

            let bounds = (label as NSString).boundingRect(with: largeSize, options: [], attributes: scaleAttributes)
            let pos = CGPoint(x: xMid - bounds.width / 2, y: yTop - bounds.height)
            let frame = bounds.offsetBy(dx: pos.x, dy: pos.y).insetBy(dx: -3, dy: 0)
            guard !previousFrame.intersects(frame) else { continue }
            (label as NSString).draw(at: pos, withAttributes: scaleAttributes)
            previousFrame = frame
        }

        // Draw border

        for (_, color, path) in curves {
            color.setStroke()
            let path = (chartTransform as NSAffineTransform).transform(path)
            path.lineCapStyle = .roundLineCapStyle
            path.lineJoinStyle = .roundLineJoinStyle
            p.lineParams.apply(on: path)
            path.stroke()
        }
        if !presentationMode {
