diff --git a/src/core/qgsdatadefinedsizelegend.cpp b/src/core/qgsdatadefinedsizelegend.cpp index 8aa27d0e1bb..d967148cdca 100644 --- a/src/core/qgsdatadefinedsizelegend.cpp +++ b/src/core/qgsdatadefinedsizelegend.cpp @@ -178,16 +178,18 @@ void QgsDataDefinedSizeLegend::drawCollapsedLegend( QgsRenderContext &context, Q if ( w > maxTextWidth ) maxTextWidth = w; } + // add extra width needed to handle varying rendering of font weight + maxTextWidth += 1; // find out size of the largest symbol double largestSize = classes.at( 0 ).size; - double outputLargestSize = context.convertToPainterUnits( largestSize, s->sizeUnit(), s->sizeMapUnitScale() ); + int outputLargestSize = std::round( context.convertToPainterUnits( largestSize, s->sizeUnit(), s->sizeMapUnitScale() ) ); // find out top Y coordinate for individual symbol sizes QList symbolTopY; Q_FOREACH ( const SizeClass &c, classes ) { - double outputSymbolSize = context.convertToPainterUnits( c.size, s->sizeUnit(), s->sizeMapUnitScale() ); + int outputSymbolSize = std::round( context.convertToPainterUnits( c.size, s->sizeUnit(), s->sizeMapUnitScale() ) ); switch ( mVAlign ) { case AlignCenter: @@ -243,7 +245,7 @@ void QgsDataDefinedSizeLegend::drawCollapsedLegend( QgsRenderContext &context, Q { s->setSize( c.size ); - double outputSymbolSize = context.convertToPainterUnits( c.size, s->sizeUnit(), s->sizeMapUnitScale() ); + int outputSymbolSize = std::round( context.convertToPainterUnits( c.size, s->sizeUnit(), s->sizeMapUnitScale() ) ); double tx = ( outputLargestSize - outputSymbolSize ) / 2; p->save(); diff --git a/tests/testdata/control_images/data_defined_size_legend/expected_basic_bottom/expected_basic_bottom.png b/tests/testdata/control_images/data_defined_size_legend/expected_basic_bottom/expected_basic_bottom.png index 91bd75e7cca..1f72c33c119 100644 Binary files a/tests/testdata/control_images/data_defined_size_legend/expected_basic_bottom/expected_basic_bottom.png and b/tests/testdata/control_images/data_defined_size_legend/expected_basic_bottom/expected_basic_bottom.png differ diff --git a/tests/testdata/control_images/data_defined_size_legend/expected_crowded/expected_crowded.png b/tests/testdata/control_images/data_defined_size_legend/expected_crowded/expected_crowded.png index 5c3394280b1..9281a723bea 100644 Binary files a/tests/testdata/control_images/data_defined_size_legend/expected_crowded/expected_crowded.png and b/tests/testdata/control_images/data_defined_size_legend/expected_crowded/expected_crowded.png differ diff --git a/tests/testdata/control_images/legend/expected_legend_data_defined_size_collapsed/expected_legend_data_defined_size_collapsed.png b/tests/testdata/control_images/legend/expected_legend_data_defined_size_collapsed/expected_legend_data_defined_size_collapsed.png index bfbd24bb45e..ad7476ca992 100644 Binary files a/tests/testdata/control_images/legend/expected_legend_data_defined_size_collapsed/expected_legend_data_defined_size_collapsed.png and b/tests/testdata/control_images/legend/expected_legend_data_defined_size_collapsed/expected_legend_data_defined_size_collapsed.png differ