The preview is unlikely to match the finished render because you are using UV mapping. To have the preview cube match the finished render would require the preview cube to be using the same uv mapping that you are using. The preview isn't able to do this because it isn't aware what object the material is being applied to and has no connection to your object.
The material preview is used to answer the question "What would my material look like if it were applied to different objects?" but not "What will the material look like on my specific object?" The fact that your object, a cube, looks like the preview, also a cube, is just coincidence.
Setting the viewport to 'Rendered' shading mode is the best way to preview how the material will look on your object.