public void drawPoint(Graphics2D g2, Point p) {
        	StringBuilder sb = new StringBuilder();
            sb.append("");
            sb.append(p.value);
            String strI = sb.toString();
            double x_in = (dimension*s-ox)/size;
            double y_in = (dimension*s-oy)/size;
            
            double saturation = 0;
            if (p.value > 0)
            	saturation = Math.min(((Math.log((double) p.value) / Math.log(2.0)))/8, 1);

        	if (p.owner == -1) {
                g2.setPaint(new Color(255,255,255));
         	} else if (p.owner == 0) {
                //g2.setPaint(new Color(255 - brightness*32, 255, 255));
                g2.setPaint(new Color(Color.HSBtoRGB((float) 0.6, (float) saturation, (float) 1.0)));
         		g2.fillRect((int)(ox+p.x*x_in), (int)(oy+p.y*y_in), (int)(x_in), (int)(y_in));

            }
            else {
                g2.setPaint(new Color(Color.HSBtoRGB((float) 0.4, (float) saturation, (float) 0.85)));
         		g2.fillRect((int)(ox+p.x*x_in), (int)(oy+p.y*y_in), (int)(x_in), (int)(y_in));

            }
       		 
        	if (p.value <= 1)
        		g2.setPaint(new Color(196,196,196));
        	else
        		g2.setPaint(Color.BLACK);
        	
        	if (p.value > 0)
        		g2.drawString(strI, (int)(11+p.x*x_in), (int)(p.y*y_in+25));
            
            if (p.change) {
            	g2.setPaint(new Color(255,96,96));
            	g2.draw(new Rectangle2D.Double((int)(ox+p.x*x_in), (int)(oy+p.y*y_in), (int)(x_in), (int)(y_in)));
        		p.change = false;
        	}
        }