Ok, I "fixed" it. Not sure what consequences this will have down the road but It's simple to reverse it. So far everything works:
The Problem: in ndxzsite/plugin/format.visual_index.php on line 455 there is a call to page::get_images() method. In ndxzstudio/lib/page.php you'll find that the get_imgs method dynamically instantiates one of the filesource classes then calls and returns the value of filesourcexxx::getDisplayImages(). Well if you take a look at any one of the 6 getDisplayImages methods you'll notice that it sets the value of $img['media_path'] = $OBJ->basurl . $path . '/th-' . $do['media_ref_id'] . _ . $do['media_file']. If you look at the database entries in the media table you'll see that in every entry the value of media_ref_id matches the numerical beginning of the meida_file. So for a file say th-8_img3240.jpg getDisplayImages() incorrectly sets the path to th-8_8_img3240 because media_ref_id would be 8.
Solution: I'm guessing this is supposed to work so that filenames in the /files/ directory are prepended with the media_ref_id but filenames in the database AREN'T so that setting the image path to media_ref_id . _ . media_file would actually produce a valid file reference. So possibly the best solution would be to remove all the *NUMBER*_ prefixes from the database media table filenames. I have no idea why the developers want it to work this way, or why they've ended up duplicating so much code in their filesourcexxx classes. But my solution was to simply remove $do['media_ref_id'] . _ from the meida_path. So far everything works just like it should. Of course you should keep unedited copies of these files in case you need them.