@Override
	public void paint( Graphics g ) {
		int screenWidth = getWidth();
		int screenHeight = getHeight();
		int screenCenterX = screenWidth/2;
		int screenCenterY = screenHeight/2;
		
		g.setColor( Color.BLACK );
		g.fillRect( 0, 0, screenWidth, screenHeight );
		
		for( BackgroundArea area : vws.visibleBackgroundAreas ) {
			double minX = (area.minX - centerX) * zoom + screenCenterX;
			double minY = (area.minY - centerY) * zoom + screenCenterY;
			double maxX = (area.maxX - centerX) * zoom + screenCenterX;
			double maxY = (area.maxY - centerY) * zoom + screenCenterY;
			
			if( maxX < 0 || minX > screenWidth ) continue;
			if( maxY < 0 || minY > screenHeight ) continue;
			
			if( minX < -32 ) minX = -32;
			if( minY < -32 ) minY = -32;
			if( maxX > screenWidth + 32 ) maxX = screenWidth + 32;
			if( maxY > screenHeight + 32 ) maxY = screenHeight + 32;
			
			g.setColor( area.type.getColorFunction().getAwtColor(System.currentTimeMillis()) );
			g.fillRect( (int)minX, (int)minY, (int)(maxX-minX), (int)(maxY-minY) );
		}
	}