Since QGIS multiplies the image with the scale factor when reading, it messes up the image if the scale factor is not properly defined to the data as QGIS expected. For example, I am reading MODIS NDVI into QGIS and array is int16. Int16 range is between (-32768, 32767). Range of input data values are between -2000 and 10000 and the scale factor is 10000. QGIS multiplies the array with 10000 and values go beyond the acceptable range of int16 and QGIS rescales the pixel values and make them between (-32768, 32767). In the end, you can not fix the problem by dividing it by the scale factor because values are rescaled once they go beyond int16 range. Is there any possibility make QGIS not apply the scale factor to the data?
download the data and extract NDVI sublayer http://e4ftl01.cr.usgs.gov/MOLT/MOD13A2.005/2009.07.28/MOD13A2.A2009209.h10v06.005.2009228232821.hdf
My recommendation to QGIS guys. You shouldn't worry about scale factor because you don't know how it is defined (either multiplication or division).