diff --git a/LUFA/Drivers/Board/XPLAIN/Dataflash.h b/LUFA/Drivers/Board/XPLAIN/Dataflash.h
index d793d306f7d5d86f97bf5a7d1e832451bade4384..de71f29eddae1a5b0a27f3558cb46b6b765b0daf 100644
--- a/LUFA/Drivers/Board/XPLAIN/Dataflash.h
+++ b/LUFA/Drivers/Board/XPLAIN/Dataflash.h
@@ -72,7 +72,7 @@
 			/** Mask for the first dataflash chip selected. */
 			#define DATAFLASH_CHIP1                      (1 << 5)
 
-			#if BOAD == XPLAIN_REV1
+			#if (BOARD == BOARD_XPLAIN_REV1)
 				#define DATAFLASH_PAGE_SIZE              256
 
 				#define DATAFLASH_PAGES                  2048							
@@ -111,9 +111,7 @@
 			 *  \param[in] BufferByte   Address within the dataflash's buffer
 			 */
 			static inline void Dataflash_SendAddressBytes(uint16_t PageAddress, const uint16_t BufferByte)
-			{	
-				PageAddress >>= 1;
-				
+			{
 				Dataflash_SendByte(PageAddress >> 5);
 				Dataflash_SendByte((PageAddress << 3) | (BufferByte >> 8));
 				Dataflash_SendByte(BufferByte);
diff --git a/LUFA/Drivers/Board/XPLAIN/LEDs.h b/LUFA/Drivers/Board/XPLAIN/LEDs.h
index 6951ce763be79a36d0a5524d558567e07bb7d872..600be9f26ace2f24630b9b1c4db662c441cfa3e1 100644
--- a/LUFA/Drivers/Board/XPLAIN/LEDs.h
+++ b/LUFA/Drivers/Board/XPLAIN/LEDs.h
@@ -75,28 +75,28 @@
 		#if !defined(__DOXYGEN__)
 			static inline void LEDs_Init(void)
 			{
-				DDRB  |=  LEDS_ALL_LEDS;
-				PORTB &= ~LEDS_ALL_LEDS;
+				DDRB  |= LEDS_ALL_LEDS;
+				PORTB |= LEDS_ALL_LEDS;
 			}
 			
 			static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask)
 			{
-				PORTB |= LEDMask;
+				PORTB &= ~LEDMask;
 			}
 
 			static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask)
 			{
-				PORTB &= ~LEDMask;
+				PORTB |= LEDMask;
 			}
 
 			static inline void LEDs_SetAllLEDs(const uint8_t LEDMask)
 			{
-				PORTB = ((PORTB & ~LEDS_ALL_LEDS) | LEDMask);
+				PORTB = ((PORTB | LEDS_ALL_LEDS) & ~LEDMask);
 			}
 			
 			static inline void LEDs_ChangeLEDs(const uint8_t LEDMask, const uint8_t ActiveMask)
 			{
-				PORTB = ((PORTB & ~(LEDMask & LEDS_ALL_LEDS)) | (ActiveMask & LEDS_ALL_LEDS));
+				PORTB = ((PORTB | (LEDMask & LEDS_ALL_LEDS)) & (~ActiveMask & LEDS_ALL_LEDS));
 			}
 			
 			static inline void LEDs_ToggleLEDs(const uint8_t LEDMask)
@@ -107,7 +107,7 @@
 			static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT;
 			static inline uint8_t LEDs_GetLEDs(void)
 			{
-				return (PORTB & LEDS_ALL_LEDS);
+				return (~PORTB & LEDS_ALL_LEDS);
 			}
 		#endif
 		
diff --git a/LUFA/Drivers/USB/HighLevel/USBMode.h b/LUFA/Drivers/USB/HighLevel/USBMode.h
index 9e2b1ff27b5a971c71b73f59a059d9c6fb43dbfd..0f2ecab883f685ce9d4c2e6a4b7f1598620f559a 100644
--- a/LUFA/Drivers/USB/HighLevel/USBMode.h
+++ b/LUFA/Drivers/USB/HighLevel/USBMode.h
@@ -84,7 +84,7 @@
 			#if (defined(__AVR_AT90USB162__) || defined(__AVR_AT90USB82__)  || \
 			     defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega8U2__))
 				#define USB_SERIES_2_AVR
-			#elif (defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__))
+			#elif (defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega16U4__))
 				#define USB_SERIES_4_AVR
 			#elif (defined(__AVR_ATmega32U6__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__))
 				#define USB_SERIES_6_AVR
diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt
index 79fa8242b5e778d5fc06e82cd6a52ed38bf7f27e..351c33f3e5aa7cf8ac7a92843b59a9c4dcf40464 100644
--- a/LUFA/ManPages/ChangeLog.txt
+++ b/LUFA/ManPages/ChangeLog.txt
@@ -32,6 +32,8 @@
   *  - Fixed AVRISP PDI race condition where the guard time between direction changes could be interpreted as a start bit
   *  - Fixed ADC_IsReadingComplete() returning an inverted result
   *  - Fixed blocking CDC streams not aborting when the host is disconnected
+  *  - Fixed XPLAIN board Dataflash driver broken due to incorrect preprocessor commands
+  *  - Fixed inverted XPLAIN LED driver output (LED turned on when it was supposed to be turned off, and vice-versa)
   *
   *  \section Sec_ChangeLog091223 Version 091223
   *