diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Bezier_x_monotone_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Bezier_x_monotone_2.h index ae06841ffea..ded1a7cf313 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Bezier_x_monotone_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Bezier_x_monotone_2.h @@ -959,11 +959,12 @@ _Bezier_x_monotone_2::point_position if ( p.is_rational() ){ - const Rational& px = ((Rat_point_2) p).x(); + const Rational px = ((Rat_point_2) p).x(); Integer denom_px=nt_traits.denominator(px); Integer numer_px=nt_traits.numerator(px); - Polynomial poly_px = CGAL::sign(numer_px) == ZERO ? Polynomial() : nt_traits.construct_polynomial(&numer_px,0); + Integer poly_px_scale = numer_px * _curve.x_norm(); + Polynomial poly_px = CGAL::sign(numer_px) == ZERO ? Polynomial() : nt_traits.construct_polynomial(&poly_px_scale,0); Polynomial poly_x = nt_traits.scale(_curve.x_polynomial(),denom_px) - poly_px; std::vector roots;