diff --git a/Components/AY38910/AY38910.hpp b/Components/AY38910/AY38910.hpp
index 963c9071f..d02aff8cd 100644
--- a/Components/AY38910/AY38910.hpp
+++ b/Components/AY38910/AY38910.hpp
@@ -26,7 +26,7 @@ class PortHandler {
 	public:
 		/*!
 			Requests the current input on an AY port.
-			
+
 			@param port_b @c true if the input being queried is Port B. @c false if it is Port A.
 		*/
 		virtual uint8_t get_port_input(bool port_b) {
@@ -35,7 +35,7 @@ class PortHandler {
 
 		/*!
 			Requests the current input on an AY port.
-			
+
 			@param port_b @c true if the input being queried is Port B. @c false if it is Port A.
 		*/
 		virtual void set_port_output(bool port_b, uint8_t value) {}
diff --git a/Inputs/Joystick.hpp b/Inputs/Joystick.hpp
index 036d936a6..364941e8d 100644
--- a/Inputs/Joystick.hpp
+++ b/Inputs/Joystick.hpp
@@ -20,7 +20,7 @@ namespace Inputs {
 class Joystick {
 	public:
 		virtual ~Joystick() {}
-	
+
 		enum class DigitalInput {
 			Up, Down, Left, Right, Fire
 		};
diff --git a/Inputs/Keyboard.hpp b/Inputs/Keyboard.hpp
index 0506be2b0..9214bd985 100644
--- a/Inputs/Keyboard.hpp
+++ b/Inputs/Keyboard.hpp
@@ -21,7 +21,7 @@ namespace Inputs {
 class Keyboard {
 	public:
 		Keyboard();
-	
+
 		enum class Key {
 			Escape, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PrintScreen, ScrollLock, Pause,
 			BackTick, k1, k2, k3, k4, k5, k6, k7, k8, k9, k0, Hyphen, Equals, BackSpace,
@@ -55,7 +55,7 @@ class Keyboard {
 		std::vector<bool> key_states_;
 		Delegate *delegate_ = nullptr;
 };
-	
+
 }
 
 #endif /* Keyboard_hpp */
diff --git a/Machines/CRTMachine.hpp b/Machines/CRTMachine.hpp
index f6fbd9c30..55ed44f93 100644
--- a/Machines/CRTMachine.hpp
+++ b/Machines/CRTMachine.hpp
@@ -36,7 +36,7 @@ class Machine: public ROMMachine::Machine {
 			OpenGL context is bound.
 		*/
 		virtual void close_output() = 0;
-	
+
 		/// @returns The CRT this machine is drawing to. Should not be @c nullptr.
 		virtual std::shared_ptr<Outputs::CRT::CRT> get_crt() = 0;
 
diff --git a/Machines/Commodore/1540/C1540.hpp b/Machines/Commodore/1540/C1540.hpp
index 5d3c5564c..5d9b521c3 100644
--- a/Machines/Commodore/1540/C1540.hpp
+++ b/Machines/Commodore/1540/C1540.hpp
@@ -27,7 +27,7 @@ class Machine: public MachineBase, public ROMMachine::Machine {
 			C1541
 		};
 		Machine(Personality p);
-	
+
 		/*!
 			Sets the source for this drive's ROM image.
 		*/
diff --git a/Machines/Commodore/Vic-20/Keyboard.cpp b/Machines/Commodore/Vic-20/Keyboard.cpp
index 8f3d5773d..08da41641 100644
--- a/Machines/Commodore/Vic-20/Keyboard.cpp
+++ b/Machines/Commodore/Vic-20/Keyboard.cpp
@@ -60,7 +60,7 @@ uint16_t KeyboardMapper::mapped_key_for_key(Inputs::Keyboard::Key key) {
 		BIND(Enter, KeyReturn);
 		BIND(Space, KeySpace);
 		BIND(BackSpace, KeyDelete);
-		
+
 		BIND(Escape, KeyRunStop);
 		BIND(F1, KeyF1);
 		BIND(F3, KeyF3);
diff --git a/Machines/KeyboardMachine.hpp b/Machines/KeyboardMachine.hpp
index 0074a3ee2..4839a1005 100644
--- a/Machines/KeyboardMachine.hpp
+++ b/Machines/KeyboardMachine.hpp
@@ -16,7 +16,7 @@ namespace KeyboardMachine {
 class Machine: public Inputs::Keyboard::Delegate {
 	public:
 		Machine();
-	
+
 		/*!
 			Indicates that the key @c key has been either pressed or released, according to
 			the state of @c isPressed.
diff --git a/OSBindings/Mac/Clock Signal/Machine/CSMachine.h b/OSBindings/Mac/Clock Signal/Machine/CSMachine.h
index 1b6f805c2..82ec1aaf9 100644
--- a/OSBindings/Mac/Clock Signal/Machine/CSMachine.h	
+++ b/OSBindings/Mac/Clock Signal/Machine/CSMachine.h	
@@ -21,7 +21,7 @@
 - (instancetype)init NS_UNAVAILABLE;
 /*!
 	Initialises an instance of CSMachine.
-	
+
 	@param machine The pointer to an instance of @c CRTMachine::Machine* . C++ type is omitted because
 	this header is visible to Swift, and the designated initialiser cannot be placed into a category.
 */
diff --git a/OSBindings/Mac/Clock Signal/Machine/CSMachine.mm b/OSBindings/Mac/Clock Signal/Machine/CSMachine.mm
index c1a3049f2..a301f3922 100644
--- a/OSBindings/Mac/Clock Signal/Machine/CSMachine.mm	
+++ b/OSBindings/Mac/Clock Signal/Machine/CSMachine.mm	
@@ -249,7 +249,7 @@ struct MachineDelegate: CRTMachine::Machine::Delegate, public LockProtectedDeleg
 				BIND(VK_ANSI_KeypadMultiply, KeyPadAsterisk);		BIND(VK_ANSI_KeypadDivide, KeyPadSlash);
 				BIND(VK_ANSI_KeypadPlus, KeyPadPlus);				BIND(VK_ANSI_KeypadMinus, KeyPadMinus);
 				BIND(VK_ANSI_KeypadClear, KeyPadDelete);			BIND(VK_ANSI_KeypadEnter, KeyPadEnter);
-				
+
 				BIND(VK_Return, Enter);					BIND(VK_Tab, Tab);
 				BIND(VK_Space, Space);					BIND(VK_Delete, BackSpace);
 				BIND(VK_Control, LeftControl);			BIND(VK_Option, LeftOption);
diff --git a/OSBindings/Mac/Clock SignalTests/WolfgangLorenzTests.swift b/OSBindings/Mac/Clock SignalTests/WolfgangLorenzTests.swift
index e8ed7be76..eb847741b 100644
--- a/OSBindings/Mac/Clock SignalTests/WolfgangLorenzTests.swift	
+++ b/OSBindings/Mac/Clock SignalTests/WolfgangLorenzTests.swift	
@@ -10,7 +10,7 @@ import XCTest
 import Foundation
 
 class WolfgangLorenzTests: XCTestCase, CSTestMachineTrapHandler {
-	
+
 	func testWolfgangLorenzStart()	{
 		self.runWolfgangLorenzTest(" start")
 	}
diff --git a/SignalProcessing/FIRFilter.hpp b/SignalProcessing/FIRFilter.hpp
index 126e9dc60..e98c7a725 100644
--- a/SignalProcessing/FIRFilter.hpp
+++ b/SignalProcessing/FIRFilter.hpp
@@ -37,7 +37,7 @@ class FIRFilter {
 	public:
 		/*!
 			Creates an instance of @c FIRFilter.
-			
+
 			@param number_of_taps The size of window for input data.
 			@param input_sample_rate The sampling rate of the input signal.
 			@param low_frequency The lowest frequency of signal to retain in the output.
@@ -53,7 +53,7 @@ class FIRFilter {
 
 		/*!
 			Applies the filter to one batch of input samples, returning the net result.
-			
+
 			@param src The source buffer to apply the filter to.
 			@returns The result of applying the filter.
 		*/
diff --git a/StaticAnalyser/StaticAnalyser.hpp b/StaticAnalyser/StaticAnalyser.hpp
index 64bb8eb62..df8d7755f 100644
--- a/StaticAnalyser/StaticAnalyser.hpp
+++ b/StaticAnalyser/StaticAnalyser.hpp
@@ -116,7 +116,7 @@ struct Target {
 
 /*!
 	Attempts, through any available means, to return a list of potential targets for the file with the given name.
-	
+
 	@returns The list of potential targets, sorted from most to least probable.
 */
 std::list<Target> GetTargets(const char *file_name);
diff --git a/Storage/Data/Commodore.cpp b/Storage/Data/Commodore.cpp
index 20a996f33..04f81b1d2 100644
--- a/Storage/Data/Commodore.cpp
+++ b/Storage/Data/Commodore.cpp
@@ -12,7 +12,7 @@ std::wstring Storage::Data::Commodore::petscii_from_bytes(const uint8_t *string,
 	std::wstring result;
 
 	wchar_t unshifted_characters[256] = {
-		L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\r',	L'\0',	L'\0',	
+		L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\r',	L'\0',	L'\0',
 		L'\0',	L'\0',	L'\0',	L'\0',	L'\b',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',
 		L' ',	L'!',	L'"',	L'#',	L'$',	L'%',	L'&',	L'\'',	L'(',	L')',	L'*',	L'+',	L',',	L'-',	L'.',	L'/',
 		L'0',	L'1',	L'2',	L'3',	L'4',	L'5',	L'6',	L'7',	L'8',	L'9',	L'"',	L';',	L'<',	L'=',	L'>',	L'?',
@@ -31,7 +31,7 @@ std::wstring Storage::Data::Commodore::petscii_from_bytes(const uint8_t *string,
 	};
 
 	wchar_t shifted_characters[256] = {
-		L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\r',	L'\0',	L'\0',	
+		L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\r',	L'\0',	L'\0',
 		L'\0',	L'\0',	L'\0',	L'\0',	L'\b',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',	L'\0',
 		L' ',	L'!',	L'"',	L'#',	L'$',	L'%',	L'&',	L'\'',	L'(',	L')',	L'*',	L'+',	L',',	L'-',	L'.',	L'/',
 		L'0',	L'1',	L'2',	L'3',	L'4',	L'5',	L'6',	L'7',	L'8',	L'9',	L'"',	L';',	L'<',	L'=',	L'>',	L'?',
diff --git a/Storage/Disk/DiskImage/Formats/CPCDSK.cpp b/Storage/Disk/DiskImage/Formats/CPCDSK.cpp
index bcf0794e7..fb76a4d2b 100644
--- a/Storage/Disk/DiskImage/Formats/CPCDSK.cpp
+++ b/Storage/Disk/DiskImage/Formats/CPCDSK.cpp
@@ -63,7 +63,7 @@ CPCDSK::CPCDSK(const char *file_name) :
 			// Track and side are stored, being a byte each.
 			track->track = file.get8();
 			track->side = file.get8();
-			
+
 			// If this is an extended disk image then John Elliott's extension provides some greater
 			// data rate and encoding context. Otherwise the next two bytes have no defined meaning.
 			if(is_extended_) {
@@ -83,7 +83,7 @@ CPCDSK::CPCDSK(const char *file_name) :
 				track->data_encoding = Track::DataEncoding::Unknown;
 				file.seek(2, SEEK_CUR);
 			}
-			
+
 			// Sector size, number of sectors, gap 3 length and the filler byte are then common
 			// between both variants of DSK.
 			track->sector_length = file.get8();
@@ -204,7 +204,7 @@ std::shared_ptr<Track> CPCDSK::get_track_at_position(::Storage::Disk::Track::Add
 
 	// Return a nullptr if out of range or not provided.
 	if(chronological_track >= tracks_.size()) return nullptr;
-	
+
 	Track *track = tracks_[chronological_track].get();
 	if(!track) return nullptr;
 
@@ -270,7 +270,7 @@ void CPCDSK::set_tracks(const std::map<::Storage::Disk::Track::Address, std::sha
 			if(source_sector.second.is_deleted)				sector.fdc_status2 |= 0x40;
 		}
 	}
-	
+
 	// Rewrite the entire disk image, in extended form.
 	Storage::FileHolder output(file_name_, Storage::FileHolder::FileMode::Rewrite);
 	output.write(reinterpret_cast<const uint8_t *>("EXTENDED CPC DSK File\r\nDisk-Info\r\n"), 34);
@@ -290,7 +290,7 @@ void CPCDSK::set_tracks(const std::map<::Storage::Disk::Track::Address, std::sha
 			output.put8(0);
 			continue;
 		}
-		
+
 		// Calculate size of track.
 		size_t track_size = 256;
 		for(auto &sector: track->sectors) {
@@ -303,7 +303,7 @@ void CPCDSK::set_tracks(const std::map<::Storage::Disk::Track::Address, std::sha
 		track_size += (256 - (track_size & 255)) & 255;
 		output.put8(static_cast<uint8_t>(track_size >> 8));
 	}
-	
+
 	// Advance to offset 256.
 	output.putn(static_cast<size_t>(256 - output.tell()), 0);
 
@@ -363,7 +363,7 @@ void CPCDSK::set_tracks(const std::map<::Storage::Disk::Track::Address, std::sha
 			}
 			output.put16le(static_cast<uint16_t>(data_size));
 		}
-		
+
 		// Move to next 256-byte boundary.
 		long distance = (256 - output.tell()&255)&255;
 		output.putn(static_cast<size_t>(distance), 0);
diff --git a/Storage/Disk/Track/PCMPatchedTrack.hpp b/Storage/Disk/Track/PCMPatchedTrack.hpp
index c560f8dd6..4dda09a4c 100644
--- a/Storage/Disk/Track/PCMPatchedTrack.hpp
+++ b/Storage/Disk/Track/PCMPatchedTrack.hpp
@@ -34,7 +34,7 @@ class PCMPatchedTrack: public Track {
 		/*!
 			Replaces whatever is currently on the track from @c start_position to @c start_position + segment length
 			with the contents of @c segment.
-			
+
 			@param start_time The time at which this segment begins. Must be in the range [0, 1).
 			@param segment The PCM segment to add.
 			@param clamp_to_index_hole If @c true then the new segment will be truncated if it overruns the index hole;
diff --git a/Storage/FileHolder.cpp b/Storage/FileHolder.cpp
index 2ae9702be..4fec9ef73 100644
--- a/Storage/FileHolder.cpp
+++ b/Storage/FileHolder.cpp
@@ -31,7 +31,7 @@ FileHolder::FileHolder(const std::string &file_name, FileMode ideal_mode)
 		case FileMode::Read:
 			file_ = fopen(file_name.c_str(), "rb");
 		break;
-		
+
 		case FileMode::Rewrite:
 			file_ = fopen(file_name.c_str(), "w");
 		break;
diff --git a/Storage/FileHolder.hpp b/Storage/FileHolder.hpp
index 57878a81d..e8a9ee133 100644
--- a/Storage/FileHolder.hpp
+++ b/Storage/FileHolder.hpp
@@ -23,7 +23,7 @@ class FileHolder final {
 		enum {
 			ErrorCantOpen = -1
 		};
-	
+
 		enum class FileMode {
 			ReadWrite,
 			Read,
@@ -168,7 +168,7 @@ class FileHolder final {
 					return bit;
 				}
 		};
-	
+
 		/*!
 			Obtains a BitStream for reading from the file from the current reading cursor.
 		*/
@@ -204,7 +204,7 @@ class FileHolder final {
 			@returns the stat struct describing this file.
 		*/
 		struct stat &stats();
-	
+
 		/*!
 			@returns a mutex owned by the file that can be used to serialise file access.
 		*/
diff --git a/Storage/Tape/Parsers/TapeParser.hpp b/Storage/Tape/Parsers/TapeParser.hpp
index fa47ac47d..d171c4dd6 100644
--- a/Storage/Tape/Parsers/TapeParser.hpp
+++ b/Storage/Tape/Parsers/TapeParser.hpp
@@ -105,7 +105,7 @@ template <typename WaveType, typename SymbolType> class PulseClassificationParse
 	protected:
 		/*!
 			Sets @c symbol as the newly-recognised symbol and removes @c nunber_of_waves waves from the front of the list.
-			
+
 			Expected to be called by subclasses from @c process_pulse when it recognises that the first @c number_of_waves
 			waves together represent @c symbol.
 		*/
@@ -116,7 +116,7 @@ template <typename WaveType, typename SymbolType> class PulseClassificationParse
 
 		/*!
 			Adds @c wave to the back of the list of recognised waves and calls @c inspect_waves to check for a new symbol.
-			
+
 			Expected to be called by subclasses from @c process_pulse as and when recognised waves arise.
 		*/
 		void push_wave(WaveType wave) {
@@ -126,7 +126,7 @@ template <typename WaveType, typename SymbolType> class PulseClassificationParse
 
 		/*!
 			Removes @c nunber_of_waves waves from the front of the list.
-			
+
 			Expected to be called by subclasses from @c process_pulse if it is recognised that the first set of waves
 			do not form a valid symbol.
 		*/
diff --git a/Storage/Tape/PulseQueuedTape.hpp b/Storage/Tape/PulseQueuedTape.hpp
index 634412c50..6ab419052 100644
--- a/Storage/Tape/PulseQueuedTape.hpp
+++ b/Storage/Tape/PulseQueuedTape.hpp
@@ -20,7 +20,7 @@ namespace Tape {
 
 	If is-at-end is set then get_next_pulse() returns a second of silence and
 	is_at_end() returns true.
-	
+
 	Otherwise get_next_pulse() returns something from the pulse queue if there is
 	anything there, and otherwise calls get_next_pulses(). get_next_pulses() is
 	virtual, giving subclasses a chance to provide the next batch of pulses.
diff --git a/Storage/Tape/Tape.hpp b/Storage/Tape/Tape.hpp
index 25e53ed81..d0e7b27ee 100644
--- a/Storage/Tape/Tape.hpp
+++ b/Storage/Tape/Tape.hpp
@@ -25,7 +25,7 @@ namespace Tape {
 		- high pulses exit from zero upward before returning to it;
 		- low pulses exit from zero downward before returning to it;
 		- zero pulses run along zero.
-		
+
 	Subclasses should implement at least @c get_next_pulse and @c reset to provide a serial feeding
 	of pulses and the ability to return to the start of the feed. They may also implement @c seek if
 	a better implementation than a linear search from the @c reset time can be implemented.