This should use odtDocument.convertDomPointToSteps instead. StepTranslator.convertDomPointToSteps has a "roundUp" boolean not exposed by this interface which should be fed through. Then you can do "odtDocument.convertDomPointToSteps(paragraph, 0, true)", and skip the random (and buggy) +1 done on line 330, and remove the position assignment above on line 320.