You are using the level 1C product (top of atmosphere reflectance), which will, in many cases, have atmospheric scattering present. Atmospheric scattering will skew the true surface reflectance value due to atmospheric aerosols in the image (Figure 1). Additionally, atmospheric scattering makes it difficult to compare different images because aerosol levels may be different across images.
Theoretically, electromagnetic radiation in the near-infrared spectrum should exhibit complete absorptance in water, where bottom of atmosphere reflectance values over clear, deep water bodies should be 0. Any deviation from 0 will be due to factors such as algae growth, subsurface water conditions, sensor calibration issues, or atmospheric scattering.
To rectify this situation, I would recommend calibrating your top of atmosphere level 1C products to bottom of atmosphere level 2A products. You can do this with the Sentinel Application Platform (SNAP) Sentinel-2 Toolbox and the sen2cor processor

Figure 1: TOA Level-1C image data (left) and associated BOA image data (right) generated by the Sentinel-2 Toolbox
rToa = (float)(DN_L1C_band / QUANTIFICATION_VALUE);
which QUANTIFICATION_VALUE did you use?