Multipath signal reception remains a major hurdle to GNSS positioning accuracy in urban environments. GNSS signals suffer from reflection, diffraction, and scattering, which result in multiple copies of the same signal arriving at the receiver with short delays relative to each other, and essentially degrading the navigation solution accuracy. Many studies have been conducted on modeling, analyzing, detecting, predicting, and mitigating reflected signals. However, there is a scarce research on diffracted and scattered signals. This paper aims to address the detection and mitigation of both reflected and diffracted signals in urban environments. Three algorithms are proposed. The first algorithm is an adaptive tracking with signal monitoring (ATSM) that monitors the tracking status and changes the tracking strategy to best fit the current signal status. The second algorithm is a map-matching with tracking feedback (MMTF), which is a modified map-matching algorithm that finds the most likely candidate position on a map based on predictions of signals reception status and the output of the ATSM algorithm. The third algorithm is Adaptive Position Estimation (APE) that computes code delay errors due to reflection and diffraction and removes them from the estimated code delays before calculating the navigation solution. Real GPS IF data are used to verify the performance of the proposed algorithms. The data were collected in an urban area in Hong Kong. The results show that the proposed algorithms give a better positioning accuracy compared to other recent multipath mitigation algorithms.