This is pretty hard to spot, but I think the resampling done by the Range-Doppler Terrain Correction operator is using 0 values for the missing pixels at the borders of the image. As an example, here is a Sentinel-1 product (S1B_IW_SLC__1SDV_20180112T233610_20180112T233637_009144_0105DE_2B56.SAFE), with the following operators applied:
I suspect this happens because the resampler uses 0 for “no data” pixels and includes them in the computation, polluting the output. See e.g. slides 73-79 in http://www.cyto.purdue.edu/cdroms/micro2/content/education/wirth02.pdf for a discussion of some common approaches to the problem.
Interestingly, this seems to affect the “horizontal” borders more than the “vertical” ones:
One workaround would be to figure out the kernel size and mask pixels that are in the neighborhood of a no data pixel in the output, but it’s pretty annoying to deal with, and I haven’t checked how much overlap between different tracks (?) there is.
Note that for the boundary between subsequent acquisitions in the same track, this should not happen when you apply S-1 Slice Assembly first. Have a look at the first steps of this tutorial.
I don’t think it was caused by the noData value. Could you run the terrain correction again and unselect the “Mask out areas without elevation” option? Then you will see that dark edge is part of the sea. When we mask out the sea area using DEM, we mask out pixels with 0 elevation. However, DEM is not very accurate at the boundary of sea and land, and the elevations for pixels at the boundary are not always 0. There are always some pixels at the boundary which are not properly masked out. That’s why we see dark pixels at the boundary.