public Rectangle getVisibleBoundaries( Graphics g ){
		Rectangle result = null;
		
		for( GraphPaintable paintable : paintables ){
			Rectangle boundaries = paintable.getVisibleBoundaries( g );
			result = union( result, boundaries );
		}
		
		for( Component child : canvas.getComponents() ){
			Rectangle boundaries = child.getBounds();
			result = union( result, boundaries );
		}
		
		if( result == null ){
			result = new Rectangle( 0, 0, 50, 50 );
		}
		return result;
	}