diff --git a/src/libslic3r/SLAPrint.cpp b/src/libslic3r/SLAPrint.cpp index 4d34c09c7b..6b691681d7 100644 --- a/src/libslic3r/SLAPrint.cpp +++ b/src/libslic3r/SLAPrint.cpp @@ -1182,11 +1182,18 @@ sla::DrainHoles SLAPrintObject::transformed_drainhole_points() const assert(m_model_object != nullptr); auto pts = m_model_object->sla_drain_holes; auto tr = trafo().cast(); + auto sc = m_model_object->instances.front()->get_scaling_factor().cast(); for (sla::DrainHole &hl : pts) { hl.pos = tr * hl.pos; hl.normal = tr * hl.normal - tr.translation(); + + // The normal scales as a covector (and we must also + // undo the damage already done). + hl.normal = Vec3f(hl.normal(0)/(sc(0)*sc(0)), + hl.normal(1)/(sc(1)*sc(1)), + hl.normal(2)/(sc(2)*sc(2))); } - + return pts; }