Pardon me if I've missed it, but could you share what resistor value, and pull-up voltage you are using?
With the open-collector output, you should be able to pull-up directly to the I/O voltage (3.3V or 5V), instead of pulling up all the way to Vdd. This likely will give you a better looking waveform. I suggest starting with 10k, and adjusting to lower resistances if your rise time is too long (or higher if the fall time is too long).
See this StackOverflow answer for a schematic of what I'm suggestingIs the ADC the more correct choice or is there a more standard way to take that sloppy square wave and turn it into something cleaner that will place nicer with a GPIO?
Use digital GPIO, the square wave is already good enough for a digital input, assuming its voltage is between 0 and the Vdd value of your MCU. The only time I'd use an ADC for this sort of issue is if the digital signal were very small magnitude, if there is significant DC shift (such that the threshold value needs to change over time), or if complicated DSP is required.
If you require a very precise falling edge time, then you may need to introduce a comparator (and others have mentioned) because the MCU's IO pin's threshold will not be stable over time and temperature.
Another trick I've used is to drive the output pin with a BJT-based current source (from a current mirror), which will sharpen up the edges of the output signal.