private void initGraphics() {

        background = new Region();
        background.getStyleClass().setAll("background");


        backgroundInnerShadow = new InnerShadow();
        backgroundInnerShadow.setOffsetY(-1.0);
        backgroundInnerShadow.setRadius(1.0 / 434.0 * PREFERRED_WIDTH);
        backgroundInnerShadow.setColor(Color.rgb(0, 0, 0, 0.65));
        backgroundInnerShadow.setBlurType(BlurType.TWO_PASS_BOX);

        backgroundInnerHighlight = new InnerShadow();
        backgroundInnerHighlight.setOffsetY(1.0);
        backgroundInnerHighlight.setRadius(1.0 / 434.0 * PREFERRED_WIDTH);
        backgroundInnerHighlight.setColor(Color.rgb(200, 200, 200, 0.65));
        backgroundInnerHighlight.setBlurType(BlurType.TWO_PASS_BOX);
        backgroundInnerHighlight.setInput(backgroundInnerShadow);

        background.setEffect(backgroundInnerHighlight);

        dotInnerShadow = new InnerShadow();
        dotInnerShadow.setRadius(0.018 * PREFERRED_WIDTH);
        dotInnerShadow.setColor(Color.rgb(0, 0, 0, 0.65));
        dotInnerShadow.setBlurType(BlurType.TWO_PASS_BOX);

        glow = new DropShadow();
        glow.setInput(dotInnerShadow);
        glow.setRadius(0.023 * PREFERRED_WIDTH);
        glow.setColor(getSkinnable().getColor());
        glow.setBlurType(BlurType.TWO_PASS_BOX);

        // dot definitions
        d67 = new Region();
        d67.getStyleClass().add("dot-off");
        d67.setEffect(dotInnerShadow);
        dotMap.put(Dot.D67, d67);

        d57 = new Region();
        d57.getStyleClass().add("dot-off");
        d57.setEffect(dotInnerShadow);
        dotMap.put(Dot.D57, d57);

        d47 = new Region();
        d47.getStyleClass().add("dot-off");
        d47.setEffect(dotInnerShadow);
        dotMap.put(Dot.D47, d47);

        d37 = new Region();
        d37.getStyleClass().add("dot-off");
        d37.setEffect(dotInnerShadow);
        dotMap.put(Dot.D37, d37);

        d27 = new Region();
        d27.getStyleClass().add("dot-off");
        d27.setEffect(dotInnerShadow);
        dotMap.put(Dot.D27, d27);

        d17 = new Region();
        d17.getStyleClass().add("dot-off");
        d17.setEffect(dotInnerShadow);
        dotMap.put(Dot.D17, d17);

        d07 = new Region();
        d07.getStyleClass().add("dot-off");
        d07.setEffect(dotInnerShadow);
        dotMap.put(Dot.D07, d07);

        d66 = new Region();
        d66.getStyleClass().add("dot-off");
        d66.setEffect(dotInnerShadow);
        dotMap.put(Dot.D66, d66);

        d56 = new Region();
        d56.getStyleClass().add("dot-off");
        d56.setEffect(dotInnerShadow);
        dotMap.put(Dot.D56, d56);

        d46 = new Region();
        d46.getStyleClass().add("dot-off");
        d46.setEffect(dotInnerShadow);
        dotMap.put(Dot.D46, d46);

        d36 = new Region();
        d36.getStyleClass().add("dot-off");
        d36.setEffect(dotInnerShadow);
        dotMap.put(Dot.D36, d36);

        d26 = new Region();
        d26.getStyleClass().add("dot-off");
        d26.setEffect(dotInnerShadow);
        dotMap.put(Dot.D26, d26);

        d16 = new Region();
        d16.getStyleClass().add("dot-off");
        d16.setEffect(dotInnerShadow);
        dotMap.put(Dot.D16, d16);

        d06 = new Region();
        d06.getStyleClass().add("dot-off");
        d06.setEffect(dotInnerShadow);
        dotMap.put(Dot.D06, d06);

        d65 = new Region();
        d65.getStyleClass().add("dot-off");
        d65.setEffect(dotInnerShadow);
        dotMap.put(Dot.D65, d65);

        d55 = new Region();
        d55.getStyleClass().add("dot-off");
        d55.setEffect(dotInnerShadow);
        dotMap.put(Dot.D55, d55);

        d45 = new Region();
        d45.getStyleClass().add("dot-off");
        d45.setEffect(dotInnerShadow);
        dotMap.put(Dot.D45, d45);

        d35 = new Region();
        d35.getStyleClass().add("dot-off");
        d35.setEffect(dotInnerShadow);
        dotMap.put(Dot.D35, d35);

        d25 = new Region();
        d25.getStyleClass().add("dot-off");
        d25.setEffect(dotInnerShadow);
        dotMap.put(Dot.D25, d25);

        d15 = new Region();
        d15.getStyleClass().add("dot-off");
        d15.setEffect(dotInnerShadow);
        dotMap.put(Dot.D15, d15);

        d05 = new Region();
        d05.getStyleClass().add("dot-off");
        d05.setEffect(dotInnerShadow);
        dotMap.put(Dot.D05, d05);

        d64 = new Region();
        d64.getStyleClass().add("dot-off");
        d64.setEffect(dotInnerShadow);
        dotMap.put(Dot.D64, d64);

        d54 = new Region();
        d54.getStyleClass().add("dot-off");
        d54.setEffect(dotInnerShadow);
        dotMap.put(Dot.D54, d54);

        d44 = new Region();
        d44.getStyleClass().add("dot-off");
        d44.setEffect(dotInnerShadow);
        dotMap.put(Dot.D44, d44);

        d34 = new Region();
        d34.getStyleClass().add("dot-off");
        d34.setEffect(dotInnerShadow);
        dotMap.put(Dot.D34, d34);

        d24 = new Region();
        d24.getStyleClass().add("dot-off");
        d24.setEffect(dotInnerShadow);
        dotMap.put(Dot.D24, d24);

        d14 = new Region();
        d14.getStyleClass().add("dot-off");
        d14.setEffect(dotInnerShadow);
        dotMap.put(Dot.D14, d14);

        d04 = new Region();
        d04.getStyleClass().add("dot-off");
        d04.setEffect(dotInnerShadow);
        dotMap.put(Dot.D04, d04);

        d63 = new Region();
        d63.getStyleClass().add("dot-off");
        d63.setEffect(dotInnerShadow);
        dotMap.put(Dot.D63, d63);

        d53 = new Region();
        d53.getStyleClass().add("dot-off");
        d53.setEffect(dotInnerShadow);
        dotMap.put(Dot.D53, d53);

        d43 = new Region();
        d43.getStyleClass().add("dot-off");
        d43.setEffect(dotInnerShadow);
        dotMap.put(Dot.D43, d43);

        d33 = new Region();
        d33.getStyleClass().add("dot-off");
        d33.setEffect(dotInnerShadow);
        dotMap.put(Dot.D33, d33);

        d23 = new Region();
        d23.getStyleClass().add("dot-off");
        d23.setEffect(dotInnerShadow);
        dotMap.put(Dot.D23, d23);

        d13 = new Region();
        d13.getStyleClass().add("dot-off");
        d13.setEffect(dotInnerShadow);
        dotMap.put(Dot.D13, d13);

        d03 = new Region();
        d03.getStyleClass().add("dot-off");
        d03.setEffect(dotInnerShadow);
        dotMap.put(Dot.D03, d03);

        d62 = new Region();
        d62.getStyleClass().add("dot-off");
        d62.setEffect(dotInnerShadow);
        dotMap.put(Dot.D62, d62);

        d52 = new Region();
        d52.getStyleClass().add("dot-off");
        d52.setEffect(dotInnerShadow);
        dotMap.put(Dot.D52, d52);

        d42 = new Region();
        d42.getStyleClass().add("dot-off");
        d42.setEffect(dotInnerShadow);
        dotMap.put(Dot.D42, d42);

        d32 = new Region();
        d32.getStyleClass().add("dot-off");
        d32.setEffect(dotInnerShadow);
        dotMap.put(Dot.D32, d32);

        d22 = new Region();
        d22.getStyleClass().add("dot-off");
        d22.setEffect(dotInnerShadow);
        dotMap.put(Dot.D22, d22);

        d12 = new Region();
        d12.getStyleClass().add("dot-off");
        d12.setEffect(dotInnerShadow);
        dotMap.put(Dot.D12, d12);

        d02 = new Region();
        d02.getStyleClass().add("dot-off");
        d02.setEffect(dotInnerShadow);
        dotMap.put(Dot.D02, d02);

        d61 = new Region();
        d61.getStyleClass().add("dot-off");
        d61.setEffect(dotInnerShadow);
        dotMap.put(Dot.D61, d61);

        d51 = new Region();
        d51.getStyleClass().add("dot-off");
        d51.setEffect(dotInnerShadow);
        dotMap.put(Dot.D51, d51);

        d41 = new Region();
        d41.getStyleClass().add("dot-off");
        d41.setEffect(dotInnerShadow);
        dotMap.put(Dot.D41, d41);

        d31 = new Region();
        d31.getStyleClass().add("dot-off");
        d31.setEffect(dotInnerShadow);
        dotMap.put(Dot.D31, d31);

        d21 = new Region();
        d21.getStyleClass().add("dot-off");
        d21.setEffect(dotInnerShadow);
        dotMap.put(Dot.D21, d21);

        d11 = new Region();
        d11.getStyleClass().add("dot-off");
        d11.setEffect(dotInnerShadow);
        dotMap.put(Dot.D11, d11);

        d01 = new Region();
        d01.getStyleClass().add("dot-off");
        d01.setEffect(dotInnerShadow);
        dotMap.put(Dot.D01, d01);

        // define highlights
        d67h = new Region();
        d67h.getStyleClass().add("dot-highlight");
        highlights.add(d67h);

        d57h = new Region();
        d57h.getStyleClass().add("dot-highlight");
        highlights.add(d57h);

        d47h = new Region();
        d47h.getStyleClass().add("dot-highlight");
        highlights.add(d47h);

        d37h = new Region();
        d37h.getStyleClass().add("dot-highlight");
        highlights.add(d37h);

        d27h = new Region();
        d27h.getStyleClass().add("dot-highlight");
        highlights.add(d27h);

        d17h = new Region();
        d17h.getStyleClass().add("dot-highlight");
        highlights.add(d17h);

        d07h = new Region();
        d07h.getStyleClass().add("dot-highlight");
        highlights.add(d07h);

        d66h = new Region();
        d66h.getStyleClass().add("dot-highlight");
        highlights.add(d66h);

        d56h = new Region();
        d56h.getStyleClass().add("dot-highlight");
        highlights.add(d56h);

        d46h = new Region();
        d46h.getStyleClass().add("dot-highlight");
        highlights.add(d46h);

        d36h = new Region();
        d36h.getStyleClass().add("dot-highlight");
        highlights.add(d36h);

        d26h = new Region();
        d26h.getStyleClass().add("dot-highlight");
        highlights.add(d26h);

        d16h = new Region();
        d16h.getStyleClass().add("dot-highlight");
        highlights.add(d16h);

        d06h = new Region();
        d06h.getStyleClass().add("dot-highlight");
        highlights.add(d06h);

        d65h = new Region();
        d65h.getStyleClass().add("dot-highlight");
        highlights.add(d65h);

        d55h = new Region();
        d55h.getStyleClass().add("dot-highlight");
        highlights.add(d55h);

        d45h = new Region();
        d45h.getStyleClass().add("dot-highlight");
        highlights.add(d45h);

        d35h = new Region();
        d35h.getStyleClass().add("dot-highlight");
        highlights.add(d35h);

        d25h = new Region();
        d25h.getStyleClass().add("dot-highlight");
        highlights.add(d25h);

        d15h = new Region();
        d15h.getStyleClass().add("dot-highlight");
        highlights.add(d15h);

        d05h = new Region();
        d05h.getStyleClass().add("dot-highlight");
        highlights.add(d05h);

        d64h = new Region();
        d64h.getStyleClass().add("dot-highlight");
        highlights.add(d64h);

        d54h = new Region();
        d54h.getStyleClass().add("dot-highlight");
        highlights.add(d54h);

        d44h = new Region();
        d44h.getStyleClass().add("dot-highlight");
        highlights.add(d44h);

        d34h = new Region();
        d34h.getStyleClass().add("dot-highlight");
        highlights.add(d34h);

        d24h = new Region();
        d24h.getStyleClass().add("dot-highlight");
        highlights.add(d24h);

        d14h = new Region();
        d14h.getStyleClass().add("dot-highlight");
        highlights.add(d14h);

        d04h = new Region();
        d04h.getStyleClass().add("dot-highlight");
        highlights.add(d04h);

        d63h = new Region();
        d63h.getStyleClass().add("dot-highlight");
        highlights.add(d63h);

        d53h = new Region();
        d53h.getStyleClass().add("dot-highlight");
        highlights.add(d53h);

        d43h = new Region();
        d43h.getStyleClass().add("dot-highlight");
        highlights.add(d43h);

        d33h = new Region();
        d33h.getStyleClass().add("dot-highlight");
        highlights.add(d33h);

        d23h = new Region();
        d23h.getStyleClass().add("dot-highlight");
        highlights.add(d23h);

        d13h = new Region();
        d13h.getStyleClass().add("dot-highlight");
        highlights.add(d13h);

        d03h = new Region();
        d03h.getStyleClass().add("dot-highlight");
        highlights.add(d03h);

        d62h = new Region();
        d62h.getStyleClass().add("dot-highlight");
        highlights.add(d62h);

        d52h = new Region();
        d52h.getStyleClass().add("dot-highlight");
        highlights.add(d52h);

        d42h = new Region();
        d42h.getStyleClass().add("dot-highlight");
        highlights.add(d42h);

        d32h = new Region();
        d32h.getStyleClass().add("dot-highlight");
        highlights.add(d32h);

        d22h = new Region();
        d22h.getStyleClass().add("dot-highlight");
        highlights.add(d22h);

        d12h = new Region();
        d12h.getStyleClass().add("dot-highlight");
        highlights.add(d12h);

        d02h = new Region();
        d02h.getStyleClass().add("dot-highlight");
        highlights.add(d02h);

        d61h = new Region();
        d61h.getStyleClass().add("dot-highlight");
        highlights.add(d61h);

        d51h = new Region();
        d51h.getStyleClass().add("dot-highlight");
        highlights.add(d51h);

        d41h = new Region();
        d41h.getStyleClass().add("dot-highlight");
        highlights.add(d41h);

        d31h = new Region();
        d31h.getStyleClass().add("dot-highlight");
        highlights.add(d31h);

        d21h = new Region();
        d21h.getStyleClass().add("dot-highlight");
        highlights.add(d21h);

        d11h = new Region();
        d11h.getStyleClass().add("dot-highlight");
        highlights.add(d11h);

        d01h = new Region();
        d01h.getStyleClass().add("dot-highlight");
        highlights.add(d01h);

        pane.getChildren().setAll(background,
                                  d67, d57, d47, d37, d27, d17, d07,
                                  d66, d56, d46, d36, d26, d16, d06,
                                  d65, d55, d45, d35, d25, d15, d05,
                                  d64, d54, d44, d34, d24, d14, d04,
                                  d63, d53, d43, d33, d23, d13, d03,
                                  d62, d52, d42, d32, d22, d12, d02,
                                  d61, d51, d41, d31, d21, d11, d01,
                                  d67h, d57h, d47h, d37h, d27h, d17h, d07h,
                                  d66h, d56h, d46h, d36h, d26h, d16h, d06h,
                                  d65h, d55h, d45h, d35h, d25h, d15h, d05h,
                                  d64h, d54h, d44h, d34h, d24h, d14h, d04h,
                                  d63h, d53h, d43h, d33h, d23h, d13h, d03h,
                                  d62h, d52h, d42h, d32h, d22h, d12h, d02h,
                                  d61h, d51h, d41h, d31h, d21h, d11h, d01h);

        getChildren().setAll(pane);

        resize();
        updateMatrix();
        updateMatrixColor();
        for (Region highlight : highlights) {
            highlight.setOpacity(getSkinnable().isHighlightsVisible() ? 1 : 0);
        }
    }