Port 80 is for web servers, port 631 is CUPS' web server, and port 646 has nothing to do with Printing that i'm aware of. i.e., none of these are going to allow you to forward a printer through a firewall.
Try forwarding Port 9100 and mapping the printer as a JetDirect device. Brother's have supported JetDirect for quite some time (I map mine that way).
In Windows, adding is different:
Add Printer ->
Local Printer Attached...(Uncheck auto detect) -> Select
Create New Port, choose
Standard TCP/IP Port -> Enter hostname,
Port Name is abstract and can be anything (within reason) -> Select proper printer driver -> Done, Profit. Everything else should be standard options.
As long as you're forwarding 9100, in theory that should work...
If you're trying to get Windows printer sharing to work through NAT and a typical ISP, you're just opening yourself up to leagues of problems.
Just tested this with my Brother 2070 and a friend a couple of hundred miles away, worked great for us with just Port 9100 going through the firewall to the printer. YMMV.