It's unclear if your NAT actually honors the mapping to the broadcast address. Instead, put the machine you want to wake on a static IP address (either by manually configuring it for an IP address within the NAT subnet but outside the DHCP lease pool, or by configuring the DHCP server to reserve a particular IP for that machine's MAC address (or other DHCP Client ID).
Then add a static ARP mapping your router's ARP table. For best results, make sure to do it in a way that survives reboots. Some routers don't expose a way to do this in their web-based administration UI. You may have to do it via the shell, if your router gives you a way to get to the shell. If your router doesn't give you either option, you could install an aftermarket open source firmware distro on it, such as OpenWrt or DD-WRT.
The most common reason remote WoL doesn't work is because while the target machine is sleeping, its default gateway router times out its ARP table entry for that machine, and then when the WoL packet comes in, the router can't forward it onto the LAN because it doesn't know what destination MAC address to put in the Ethernet headers. A static ARP mapping (ARP table entry) is one way around this, but many home gateway router products don't provide a way to do this.