I used the combination of PaintDotNet and Inkscape.
PaintDotNet was used to cobble together a reference that I could then use to draw over it (since the map that the game comes with is actually not very accurate and misses a lot of stuff, so I felt that I'd rather have something that replicates the game world's appearance more closely). I had to mess around a lot with bird's eye view exports from the game's editor (which exports those images as small squares for each "cell" in the grid that the world is divided into, which definitely did not speed up matters), and trying to speed things up by using UESP's interactive map
before I eventually got something that would be a suitable reference. Also, PaintDotNet is where I put together the different parts of the drawn up image and made finishing touches to it before being able to call it complete.
Meanwhile, Inkscape is where I drew almost everything of what you see on my map. Working on this map in particular has proven a major pain in the arse, seeing how Inkscape did not like having a huge raster reference image in the background and kept on crashing on a regular basis (though thankfully, it made an emergency save every time it did). It's part of the reason for why I resorted to cobbling the drawn map's pieces together in PaintDotNet instead of doing it straight away in Inkscape. I suppose I probably wouldn't be having as much of a problem if I wasn't using some ancient version of the program, but I'm just too used to how things worked in those old versions...