diff --git a/.clang-format b/.clang-format
index 79a474d..d92a3f1 100644
--- a/.clang-format
+++ b/.clang-format
@@ -6,12 +6,14 @@
 AlignConsecutiveAssignments: false
 AlignConsecutiveDeclarations: false
 AlignEscapedNewlines: Right
-AlignOperands:   true
-AlignTrailingComments: true
+AlignOperands:  Align
+AlignTrailingComments:
+  Kind: Always
+  OverEmptyLines: 1
 AllowAllParametersOfDeclarationOnNextLine: true
-AllowShortBlocksOnASingleLine: false
+AllowShortBlocksOnASingleLine: Empty
 AllowShortCaseLabelsOnASingleLine: false
-AllowShortFunctionsOnASingleLine: None
+AllowShortFunctionsOnASingleLine: Empty
 AllowShortIfStatementsOnASingleLine: false
 AllowShortLoopsOnASingleLine: false
 AlwaysBreakAfterReturnType: None
@@ -36,6 +38,7 @@
   SplitEmptyFunction:   false
   SplitEmptyRecord:     false
   SplitEmptyNamespace:  false
+BreakAfterAttributes: Never
 BreakBeforeBinaryOperators: None
 BreakBeforeBraces: Custom
 BreakBeforeTernaryOperators: true
@@ -75,9 +78,13 @@
   - Regex:           '.*'
     Priority:        6
 IndentCaseLabels: true
+IndentRequiresClause: true
 IndentWidth:     4
 IndentWrappedFunctionNames: true
+InsertNewlineAtEOF: true
 KeepEmptyLinesAtTheStartOfBlocks: false
+LambdaBodyIndentation: OuterScope
+LineEnding: LF
 MacroBlockBegin: ''
 MacroBlockEnd:   ''
 MaxEmptyLinesToKeep: 1
@@ -85,13 +92,19 @@
 ObjCBlockIndentWidth: 2
 ObjCSpaceAfterProperty: false
 ObjCSpaceBeforeProtocolList: true
+PenaltyBreakAssignment: 25
 PenaltyBreakBeforeFirstCallParameter: 19
 PenaltyBreakComment: 300
 PenaltyBreakFirstLessLess: 120
 PenaltyBreakString: 1000
 PenaltyExcessCharacter: 1000000
 PenaltyReturnTypeOnItsOwnLine: 60
+PenaltyIndentedWhitespace: 0
+QualifierAlignment: Left
+ReferenceAlignment: Left
 ReflowComments:  true
+RequiresClausePosition: OwnLine
+RequiresExpressionIndentation: Keyword
 SortIncludes:    true
 SortUsingDeclarations: true
 SpaceAfterCStyleCast: false
@@ -111,6 +124,6 @@
 SpacesInSquareBrackets: false
 Standard:        Latest
 TabWidth:        4
-UseCRLF: false
 UseTab:          Never
 ...
+
diff --git a/ikvm_args.hpp b/ikvm_args.hpp
index 183bbfa..089c700 100644
--- a/ikvm_args.hpp
+++ b/ikvm_args.hpp
@@ -23,8 +23,7 @@
          * @param[in] c - Number of arguments
          * @param[in] v - Array of arguments
          */
-        CommandLine(int c, char** v) : argc(c), argv(v)
-        {}
+        CommandLine(int c, char** v) : argc(c), argv(v) {}
         ~CommandLine() = default;
         CommandLine(const CommandLine&) = default;
         CommandLine& operator=(const CommandLine&) = default;
diff --git a/ikvm_input.cpp b/ikvm_input.cpp
index b900740..c3930b5 100644
--- a/ikvm_input.cpp
+++ b/ikvm_input.cpp
@@ -105,8 +105,8 @@
 
     if (!keyboardPath.empty())
     {
-        keyboardFd =
-            open(keyboardPath.c_str(), O_RDWR | O_CLOEXEC | O_NONBLOCK);
+        keyboardFd = open(keyboardPath.c_str(),
+                          O_RDWR | O_CLOEXEC | O_NONBLOCK);
         if (keyboardFd < 0)
         {
             log<level::ERR>("Failed to open input device",
diff --git a/ikvm_server.cpp b/ikvm_server.cpp
index 9274a9b..6a6cd06 100644
--- a/ikvm_server.cpp
+++ b/ikvm_server.cpp
@@ -133,9 +133,9 @@
             {
                 /* JFIF header contains some varying data so skip it for
                  * checksum calculation */
-                frame_crc =
-                    boost::crc<32, 0x04C11DB7, 0xFFFFFFFF, 0xFFFFFFFF, true,
-                               true>(data + 0x30, video.getFrameSize() - 0x30);
+                frame_crc = boost::crc<32, 0x04C11DB7, 0xFFFFFFFF, 0xFFFFFFFF,
+                                       true, true>(data + 0x30,
+                                                   video.getFrameSize() - 0x30);
             }
 
             if (cd->last_crc == frame_crc)
@@ -222,8 +222,8 @@
 {
     Server* server = (Server*)cl->screen->screenData;
 
-    cl->clientData =
-        new ClientData(server->video.getFrameRate(), &server->input);
+    cl->clientData = new ClientData(server->video.getFrameRate(),
+                                    &server->input);
     cl->clientGoneHook = clientGone;
     cl->clientFramebufferUpdateRequestHook = clientFramebufferUpdateRequest;
     if (!server->numClients++)
diff --git a/ikvm_video.hpp b/ikvm_video.hpp
index 449f57e..15bbb0b 100644
--- a/ikvm_video.hpp
+++ b/ikvm_video.hpp
@@ -135,8 +135,7 @@
      */
     struct Buffer
     {
-        Buffer() : data(nullptr), queued(false), payload(0), size(0)
-        {}
+        Buffer() : data(nullptr), queued(false), payload(0), size(0) {}
         ~Buffer() = default;
         Buffer(const Buffer&) = default;
         Buffer& operator=(const Buffer&) = default;
