A tool that has worked for me is "3DSubtitler" (google it) I've used it to make forced subs for Life of Pi and Avatar that are serviceable at the very least. I seemed to get the best results by using the idx/sub output mode. YMMV
EDIT: Instead of muxing the .idx and .sub files into the MKV container, I just saved them in the same folder (with the same filename as the movie before the .idx and .sub) Works fine in XBMC, MPC-HC, ZoomPlayer, and MediaBrowser. I would think they would work the same for MP4, but haven't tried it.