final double dScale = getDevice( ).getDisplayServer( ) .getDpiResolution( ) / 72d;
final double dScale = getDeviceScale( );
	protected void renderChartBlock( IPrimitiveRenderer ipr, Block b,			Object oSource ) throws ChartException	{		final double dScale = getDevice( ).getDisplayServer( )				.getDpiResolution( ) / 72d;		final RectangleRenderEvent rre = (RectangleRenderEvent) ( (EventObjectCache) ipr ).getEventObject( oSource,				RectangleRenderEvent.class );		rre.updateFrom( b, dScale );		ipr.fillRectangle( rre );		ipr.drawRectangle( rre );		if ( isInteractivityEnabled( ) )		{			Trigger tg;			EList elTriggers = b.getTriggers( );			Location[] loaHotspot = new Location[4];			Bounds bo = b.getBounds( ).scaledInstance( dScale );			double dLeft = bo.getLeft( );			double dTop = bo.getTop( );			double dWidth = bo.getWidth( );			double dHeight = bo.getHeight( );			loaHotspot[0] = LocationImpl.create( dLeft, dTop );			loaHotspot[1] = LocationImpl.create( dLeft + dWidth, dTop );			loaHotspot[2] = LocationImpl.create( dLeft + dWidth, dTop + dHeight );			loaHotspot[3] = LocationImpl.create( dLeft, dTop + dHeight );			if ( !elTriggers.isEmpty( ) )			{				final InteractionEvent iev = (InteractionEvent) ( (EventObjectCache) ipr ).getEventObject( StructureSource.createChartBlock( b ),						InteractionEvent.class );				for ( int t = 0; t < elTriggers.size( ); t++ )				{					tg = TriggerImpl.copyInstance( (Trigger) elTriggers.get( t ) );					processTrigger( tg, StructureSource.createChartBlock( b ) );					iev.addTrigger( tg );				}				final PolygonRenderEvent pre = (PolygonRenderEvent) ( (EventObjectCache) ipr ).getEventObject( StructureSource.createChartBlock( b ),						PolygonRenderEvent.class );				pre.setPoints( loaHotspot );				iev.setHotSpot( pre );				ipr.enableInteraction( iev );			}		}	}